Matlab入门.docx

上传人:b****8 文档编号:9848995 上传时间:2023-02-07 格式:DOCX 页数:35 大小:119.20KB
下载 相关 举报
Matlab入门.docx_第1页
第1页 / 共35页
Matlab入门.docx_第2页
第2页 / 共35页
Matlab入门.docx_第3页
第3页 / 共35页
Matlab入门.docx_第4页
第4页 / 共35页
Matlab入门.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

Matlab入门.docx

《Matlab入门.docx》由会员分享,可在线阅读,更多相关《Matlab入门.docx(35页珍藏版)》请在冰豆网上搜索。

Matlab入门.docx

Matlab入门

附录一Matlab入门

§1概论

常用的数学软件有Maple,Mathematica,Matlab等;常用的大型统计软件有SAS,SPSS等。

下面我们简要地介绍一些Matlab的功能,应用范围及发展史。

Matlab有五大通用功能:

数值计算功能(Nemeric),符号运算功能(Sybolic)(当要求Matlab进行符号运算时,它就请求Malpe计算并将结果返回到Matlab命令窗口),数据可视化功能(Graphic),数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。

Matlab在线性代数,矩阵分析,数值及优化,数理统计和随机信号分析,电路与系统,系统动力学,信号和图像处理,控制理论分析和系统设计,过程控制,建模和仿真,通信系统,财政金融的众多领域的理论研究和工程设计中得到了广泛应用。

MATLAB是1984年由美国Mathworks公司推向市场。

该软件有三大特点:

一是功能强大;二是界面友善,语言自然;三是开放性强(仅Mathworks公司就推出了30多个应用工具箱)。

Matlab的版本目前已经发展到Matlab7.0。

§2Matlab简介

1.指令行的编辑

启动Matlab后,就可以利用Matlab工作。

由于Matlab是一种交互式语言,随时输入指令,即时给出运算结果是它的工作方式。

2*sin(0.3*pi)/(1+sqrt(5))

ans=0.5000(ans是一个保留的Matlab字符串,它表示上面一个式子的返回结果,用于结果的缺省变量名)

2.入门演示

intro

demo

3.帮助

help

%帮助总揽

helpelfun

%关于基本函数的帮助信息

helpexp

%指数函数exp的详细信息

lookfor指令

当要查找具有某种功能但又不知道准确名字的指令时,help的能力就不够了,lookfor可以根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的指令。

lookforintegral

%查找有关积分的指令

lookforfourier

%查找能进行傅利叶变换的指令

超文本格式的帮助文件

在Matlab中,关于一个函数的帮助信息可以用doc命令以超文本的方式给出,如:

doc

docdoc

doceig

%eig求矩阵的特征值和特征向量

pdf帮助文件

4.简单的矩阵输入

要直接输入矩阵时,矩阵元素用空格或逗号分隔;矩阵行用分号“;”隔离,整个矩阵放在方括号“[]”里。

A=[1,2,3;4,5,6;7,8,9]

说明:

指令执行后,矩阵

被保存在Matlab的工作间(workspace)中,以备后用。

如果用户不用clear指令清除它,或对它进行重新赋值,那末该矩阵会一直保存在工作间中,直到本Matlab指令窗关闭为止。

矩阵的分行输入

A=[1,2,3

4,5,6

7,8,9]

5.语句与变量

Matlab语句有两种最常见的形式

)表达式

)变量=表达式

[例1]表达式的计算结果

1996/18

ans=110.8889

[例2]计算结果的赋值

s=1-1/2+1/3-1/4+1/5-1/6+...

1/7-1/8;

说明:

三个小黑点是“连行号”,分号“;”作用是:

指令执行结果将不显示在屏幕上,但变量s将驻留在内存中。

若用户想看s的值,可键入以下命令:

s

(s=

0.6345)

特殊变量

ans用于结果的缺省变量名

pi圆周率

eps计算机的最小数

flops浮点运算次数

inf无穷大如1/0

NaN不定量如0/0

i(j)i=j=

nargin

所用函数的输入变量数目

nargout所用函数的输出变量数目

realmin最小可用正实数

realmax最大可用正实数

6.数据结构:

向量、矩阵、结构数组和细胞数组

向量的转置

z=[1+j,2+pi*i,-sqrt(-1)]’

z=

1.0000-1.0000i

2.0000-3.1416i

0+1.0000i

当对复数向量进行转置操作时,可以得到其共轭转置向量。

z.'(非共轭转置向量)

②产生一个行向量

t=[0:

0.1:

10]%产生从0到10的行向量,元素之间间隔为0.1

t=linspace(n1,n2,n)

%产生n1和n2之间线性均匀分布的n个数(缺省

时,产生100个数)

t=logspace(n1,n2,n)(缺省

时,产生50个点)

who,whos,size和length是对提供工作空间变量信息很有用处的四个命令。

who执行该命令可列出储存空间的所有变量

whos显示所有的变量,变量所占的字节数及该变量是否是实数

size(a)执行该命令可以得到矩阵a的行数与列数

length(a)执行该命令后,屏幕上显示出向量a的长度。

如果a是矩阵,则显示的参数为行数列数中的最大数。

矩阵的标号

A(m,n)表示矩阵A的第m行,第n列的元素;

A(1:

2,1:

3)表示矩阵A的从第一行到第二行,从第一列到第三列的所有元素;

A(:

)可以得到一个长向量,该向量的元素是按列一一叠加在一起的。

例如

a=[12;34];a(:

ans=

1

3

2

4

矩阵的下标也可以是向量。

例如

b=a(x,y)

;可以得到一个矩阵b。

a的行标来自向量x,而列标来自向量y。

例如,矩阵a有n列,那末

b=a(:

n:

-1:

1)

将使矩阵a按列的逆序排列。

特殊矩阵

)单位矩阵

eye(m),eye(size(a))可以得到与矩阵a同样大小的单位矩阵,eye(m,n)可得到一个可允许的最大单位矩阵而其余处补0。

)所有元素为1的矩阵

ones(n),ones(size(a)),ones(m,n)

)所有元素为0的矩阵

zeros(n),zeros(m,n)

)空矩阵是一个特殊矩阵,这在线性代数中是不存在的。

例如:

q=[]

矩阵q在工作空间之中,但它的大小为零。

通过空阵的办法可以删去行与列。

例如

a=rand(5);a(:

1:

3)=[]

第一条指令执行后得到一个

的矩阵;第二条指令将矩阵a的前三列删除。

)对角矩阵

当v是向量时,diag(v)得到以v的元素为对角线上元素的对角矩阵;

当v是矩阵时,diag(v)得到一个列向量,其元素为矩阵v对角线上的元素,diag(v,1)得到矩阵v对角线上移一行的元素组成的列向量,diag(v,-1)得到矩阵v对角线下移一行的元素组成的列向量。

⑥字符串要用单引号。

例如:

disp('textstring')%disp显示命令

还有几个字符串命令可以作为文字说明和绘图标题说明等,如num2str,int2str,fprintf和sprintf。

同样,可以借助于help命令了解它们的具体用法。

结构数组

有时需要将不同的数据类型组合成一个整体,以便于引用。

这些组合在一个整体中的数据是相互联系的。

例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项都是和该学生有联系的。

下面简单介绍结构体的定义与引用。

)结构数组的定义

定义结构数组可以采用两种方法:

用赋值语句定义和用函数struct定义。

用赋值语句定义结构时,只要给出结构的属性赋值,Matlab就会自动把该属性增加到结构中,赋值时,结构名和属性名用“.”分开。

例如,下面三条语句将定义一个

的结构数组,结构名为student,有三个属性:

name、num、test。

该结构数组只有一个元素,在命令窗口中键入结构名student,将显示该元素所有属性的属性值的特性。

student.name='JohnDoe';

student.num=123456;

student.test=[797573;807879;908580];

再键入以下三行可给该结构数组增加一个元素。

student

(2).name='AnnLane';

student

(2).num=123422;

student

(2).test=[707673;809979;908580;808586];

现在结构数组student的维数为

当结构数组的元素超过1个时,MATLAB的帮助信息中,不再显示不同属性的值,而只显示数组名、属性名和维数大小。

函数struct也可用来定义结构数组,其调用格式为:

结构数组名=struct(‘属性1’,’属性值1’,‘属性2’,’属性值2’,…)

)结构数组属性值的修改、设置和获取

结构数组一旦形成,就可取出数组中的某个元素并修改该元素的某个属性的值。

以上面建立的student数组为例,命令

str=student

(2).name

可取出第二个元素的name属性的值。

命令

n=student

(2).test(4,2)

取出第二个元素test的值中第四行第二列上的数。

同理,可用命令

student

(2).test(4,2)=0

修改第二个元素test的值中第四行第二列上的数的值。

关于结构数组有如下函数:

函数名

作用

struct

生成和转换为结构数组

fieldnames

查询结构数组的属性名

getfield

查询结构数组的属性值

setfield

设置结构数组的属性值

rmfield

删除属性

isfield

检查是否为数组的属性

isstruct

检查数组是否为结构型

细胞数组

细胞数组也是MATLAB里的一类特殊的数组。

在MATLAB里,由于有细胞数组这个数据类型,才能把不同类型、不同维数的数组组成为一个数组。

细胞数组的每一个元素可为类型不同、维数不同的矩阵、向量、标量或多维数组,所有元素用大括号括起来。

如矩阵A=[1234;2345;3456],则命令

c={A,sum(A),sum(sum(A))}

得到一个

的细胞数组。

关于细胞数组有如下函数:

函数名

作用

celldisp

显示细胞数组的内容

cell

生成细胞数组

cellplot

用图形方式显示细胞数组

num2cell

把数值型转换为细胞型

deal

输入和输出的匹配

cell2struct

把细胞数组转换为结构数组

struct2cell

把结构数组转换为细胞数组

iscell

检验数组是否为细胞型

)细胞数组的生成

有两种方法可以生成细胞数组:

用赋值语句直接生成;先用cell函数预分配数组,然后再对每个元素赋值。

有两种方法可对元素赋值:

一种方法采用数组元素的下标赋值。

下面四句命令将建立一个

的细胞数组。

A(1,1)={[1:

5;6:

10]};

A(1,2)={'Annecat'};

A(2,1)={3+7i};

A(2,2)={0:

pi/10:

pi};

在大括号中,逗号或者空格表示每行元素之间的分割,分号表示不同行之间的分割。

另一种方法则把细胞数组的元素用大括号括起来,而所赋的值采用其它数组的形式。

例如下面四句生成的细胞数组和上面所生成的完全一样。

A{1,1}=[1:

5;6:

10];

A{1,2}='Annecat';

A{2,1}=3+7i;

A{2,2}=0:

pi/10:

pi;

命令

B=cell(3,4)

创建一个

的细胞矩阵。

)细胞数组内容的查看

对于上面建立的数组A,在Matlab命令窗口键入变量名A,将显示数组的简要信息。

函数celldisp用来显示细胞数组的每个元素的值。

函数cellplot将画出细胞数组的每个元素的结构图。

当给已经定义的细胞数组下标范围外的元素赋值时,Matlab自动扩维,对于没有赋值的元素,赋值为空矩阵。

7.数学运算与函数

基本代数运算操作+,-,*,\,/,^,

矩阵运算函数:

求行列式(det),矩阵求逆(inv),求秩(rank),求迹(trace),求模(norm),d=eig(A)求矩阵

的特征值,[v,d]=eig(A)求矩阵

的特征向量和特征值,这里v的列向量是对应的特征向量。

矩阵基本运算:

A\B,B/A,A.*B,A./B,A.\B,A.^B。

基本数学函数

常用的数学函数有sin,cos,tan,abs,min,sqrt,log,log10,sign,asin,acos,atan,max,sum,exp,fix等。

具体使用方法请参看帮助help。

常用的矩阵函数有expm,logm,sqrtm和funm,funm函数可计算任何一个基本数学函数的矩阵函数。

它可以表示为

fa=funm(a,'fun')

式中,fun可以是任意一个基本函数,如sin,cos,log10等。

多项式

任意多项式都可以用一个行向量来表示,即

维的向量

表示多项式

,反过来,任意一个向量就可以作为多项式。

例如:

p=[1–611-6];poly2sym(p,’x’)

ans=

x^3-6*x^2+11*x-6

的根可用如下命令。

A=[1234];roots(A)

i)poly函数

p=poly(A),A是一个

的矩阵时,此函数返回矩阵A的特征多项式p,p是

维向量;A是向量时,此函数返回以向量中的元素为根的多项式。

ii)多项式的数组运算

y=polyval(p,x)计算多项式在x处的值,x可以是矩阵或向量,此时函数计算多项式在x的每个元素处的值。

iii)多项式的矩阵运算

y=polyvalm(p,x)相当于用矩阵x代替多项式的变量来对矩阵而不是对数组进行运算,x必须是方阵。

例如:

可采用如下的命令进行计算

p=[132];

a=[12;34];

polyvalm(p,a)

iv)多项式的乘法和除法运算

w=conv(u,v)此函数求多项式u和v的乘积,即求向量u和v的卷积。

如果m=length(u),n=length(v),则w的长度为m+n-1。

[q,r]=deconv(u,v)此函数表示多项式u除以多项式v得到商多项式q和余数多项式r,如果r的元素全部为零,则表示多项式v可以整除多项式u。

8.绘图命令

二维图形

二维绘图的基本命令有plot,loglog,semilogx,semilogy和polar。

它们的使用方法基本相同,其不同特点是在不同的坐标中绘制图形。

plot命令使用线性坐标空间绘制图形;loglog命令在两个对数坐标空间中绘制图形;而semilogx(或semilogy)命令使用

轴(或

轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;polar使用极坐标空间绘制图形。

二维绘图命令plot为了适应各种绘图需要,提供了用于控制线色、数据点和线型的3组基本参数。

它的使用格式如下:

plot(x,y,’color_point_linestyle’)

该命令是绘制y对应x的轨迹的命令。

y与x均为向量,且具有相同的元素个数。

用字符串‘color_point_linestyle’完成对上面3个参数的设置。

线色(r-red,g-green,b-blue,w-white,k-black,i-invisible,y-yellow),数据点(.,o,x,+,*,S,H,D,V,^,>,<,p)与线型(-,-.,--,:

)都可以根据需要适当选择。

当plot(x,y)中的x和y均为

矩阵时,plot命令将绘得

条曲线。

plot(t,[x1,x2,x3])在同一坐标轴内同时绘制三条曲线。

如果多重曲线对应不同的向量绘制,可使用命令

plot(t1,x1,t2,x2,t3,x3)

式中x1对应t1,x2对应t2等等。

在这种情况下,t1,t2和t3可以具有不同的元素个数,但要求x1,,x2和x3必须分别与t1,t2和t3具有相同的元素数量。

subplot命令使得在一个屏幕上可以分开显示n个不同坐标系,且可分别在每一个坐标系中绘制曲线。

其命令格式如下:

subplot(r,c,p)

该命令将屏幕分成r*c,而p表示在第几个窗口。

窗口的排号是从左到右,自上而下。

在图形绘制完毕后,执行如下命令可以再在图中加入题目、标号、说明和分格线等。

这些命令有title,xlabel,ylabel,text,gtext等。

它们的命令格式如下:

title(‘MyTitle’),xlabel(‘MyX-axisLabel’),ylabel(‘MyY-axisLabel’),

text(x,y,'Textforannotation'),gtext('Textforannotation'),grid

gtext命令是使用鼠标器定位的文字注释命令。

当输入命令后,可以在屏幕上得到一个光标,然后使用鼠标器控制它的位置。

按鼠标器的左键,即可确定文字设定的位置。

holdon是图形保持命令,可以把当前图形保持在屏幕上不变,同时在这个坐标系内绘制另外一个图形。

hold命令是一个交替转换命令,即执行一次,转变一个状态(相当于holdon、holdoff)。

Matlab可以自动选择坐标轴的定标尺度,也可以使用axis命令定义坐标轴的特殊定标尺度。

其命令格式如下:

axis([x-min,x-max,y-min,y-max])

axis命令的另一个作用是控制纵横尺度的比例。

例如,输入axis(‘square’)后,可得到一个显示方框,此时再在该框内绘制一个圆形时(如:

plot(sin(x),cos(x)),在屏幕上可以看到一个圆(一般情况下,由于屏幕的不规则原因,只能看到一个椭圆)。

再次输入axis(‘normal’)命令,屏幕返回到一般状态。

x=0:

0.25:

5;

y1=x.^0.1;

y2=x.^0.5;

y3=x.^0.8;

y4=x.^1.5;

t=0:

0.001:

2*pi;

holdon

plot(3*cos(t),3*sin(t))

plot(x,y1,'bo',x,y2,'rH-')

plot(x,y3,'gp--')

plot(x,y4,'mx-.')

title('MyTitle'),xlabel('MyX-axisLabel'),ylabel('MyY-axisLabel')

text(2,8,'Textforannotation')

gtext('Textforannotation'),grid

结果如图所示:

例用极坐标绘图命令绘制方程

(四叶玫瑰线)的图形。

x=0:

0.1:

2*pi;

r=cos(2*x);

polar(x,r)

例随机地产生20个数据,再根据这些数据画统计直方图。

x=rand(1,20);

y=round(20*x);

subplot(1,2,1)

hist(x)

subplot(1,2,2)

hist(y)

三维图形

在实际工程计算中,最常用的三维绘图是三维曲线图、三维网格图和三维曲面图3种基本类型。

与此对应,Matlab也提供了3个三维基本绘图命令(三维曲线命令plot3、三维网格命令mesh和三维表面命令surf)。

下面先初步介绍其中的两个。

)三维曲线

plot3(x,y,z)通过描点连线画出曲线,这里x,y,z都是n维向量,分别表示该曲线上点集的横坐标、纵坐标、竖坐标。

例在区间[0,10*pi]画出参数曲线

,并分别标注。

t=0:

pi/50:

10*pi;

plot3(sin(t),cos(t),t)

xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')

)网格

命令mesh(x,y,z)画网格曲面。

这里x,y,z是三个数据矩阵,分别表示数据点的横坐标、纵坐标、竖坐标,命令mesh(x,y,z)将该数据点在空间中描出,并连成网格。

例绘制二元函数

的三维网格图。

x=-3:

0.1:

3;y=-5:

0.1:

5;

x1=ones(size(y'))*x;y1=y'*ones(size(x));

[x2,y2]=meshgrid(x,y);

z1=(sin(x1.*y1)+eps)./(x1.*y1+eps);

z2=(sin(x2.*y2)+eps)./(x2.*y2+eps);

subplot(1,2,1),mesh(x1,y1,z1)

subplot(1,2,2),mesh(x2,y2,z2)

符号函数的简易绘图函数ezplot

ezplot(f)绘制f(x)的函数图,这里f为代表数学表达式的包含单个符号变量x的字符串或符号表达式。

x轴的近似范围为[-2*pi,2*pi]。

ezplot(f,xmin,xmax)或ezplot(f,[min,max])使用输入参数来代替默认横坐标范围[-2*pi,2*pi]。

例画出函数

的图形

解:

ezplot(‘tan(x)’)

绘制函数图函数fplot

fplot(fun,lims)绘制由字符串fun指定函数名的函数在x轴区间为lims=[xmin,xmax]的函数图。

若lims=[xmin,xmax,ymin,ymax],则y轴也被输入限制。

fun必须为M文件的函数名或对变量x的可执行字符串,此字符串被送入函数eval后被执行。

函数fun(x)必须要返回针对向量x的每一元素结果的行向量。

例画

的图形。

解:

(1)首先用M文件fun1.m定义函数

如下:

functiony=fun1(x);

ifx<1

y=x+1;

else

y=1+1./x;

end

(2)在matlab命令窗口输入

fplot(‘fun1’,[-3,3])

就可画出函数

的图形。

画等高线的函数contour

在Matlab中,可以用contour命令绘制平面等高线,用contour3命令绘制空间等高线。

绘制平面等高线contour命令的具体使用格式为:

contour(x,y,z,n)

contour(x,y,z,v)

contourf(…)

其中x,y为其横纵坐标值向量,如果x为s维,y为m维,则z为m×s维矩阵,为对应于坐标(x,y)的高度。

参数n为整数,指定了绘出等高线的条数。

参数v为向量,指定了在哪些高度绘出等高线,如只想在一个高度z绘出等高线,则v=[z,z]。

contourf(…)命令的参数与contour命令完全相同,只是其绘出的等高线图将被自动填上颜色。

c=contour(x,y,z,n)

c=contour(x,y,z,,v)

上面2个命令用来计算所画等高线的x,y坐标值。

clabel(c)

clabel(c,v)

上面2个命令用来标注计算的c阵处的高度值。

clabel(c)将把所绘等高线全部自动标注,clabel(c,v)将自动标注由向量v确定的若干条等高线的高度值。

clc;clf;

x=0:

400:

5600;

y=0:

400:

4800;

z=[370,470,550,600,670,690,670,620,580,450,400,300,100,150,250;

510,620,730,800,850,870,850,780,72

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1