第2讲 MATLAB数据教材_第1页
第2讲 MATLAB数据教材_第2页
第2讲 MATLAB数据教材_第3页
第2讲 MATLAB数据教材_第4页
第2讲 MATLAB数据教材_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章MATLAB数据

2.1MATLAB数据的特点

2.2变量和赋值

2.3MATLAB矩阵

2.4MATLAB运算

2.5字符串

2.6结构和单元2.1MATLAB数据的特点1.矩阵是MATLAB最基本、最重要的数据对象。单个数据(标量)可以看成是矩阵的特例。【注:Matlab中使用变量时不需要说明变量的数据类型,系统将根据赋给变量的值来确定变量的数据类型。】2.MATLAB数据类型数值数据:双精度型字符数据。结构(Structure)和单元(Cell)。多维矩阵和稀疏矩阵(Sparse)。例2.简单矩阵的输入:A

=

[1,2,3

4,5,6

7,8,9]A=[1,2,3;4,5,6;7,8,9]A=[123;456;789]例1.算术运算a=2^2+(12+2*(7-4))/3^2-2^(1/2)%注意算术运算的运算符2.2数值、变量和赋值一、数值的记述MATLAB的数值采用习惯的十进制或科学计数法表示,可以带小数点或负号。以下记述都合法。

3

-99 0.001

9.456

1.3e-3 4.5e33在采用IEEE浮点算法的计算机上,数值通常采用“占用64位内存的双精度”表示。其相对精度是eps(MATLAB的一个预定义变量),大约保持有效数字16位。数值范围大致从10-308到10308。二、变量命名规则变量名、函数名是对字母大小写敏感的。

如变量myvar和MyVar表示两个不同的变量。sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。如myvar201是合法的变量名。变量名中不得包含空格、标点、运算符,但可以包含下连符。MATLAB提供的标准函数名以及命令名必须用小写字母。请指出如下5个变量名中,哪些是合法的?

abcd-2 xyz_3 3chan

a变量 ABCDefgh

三、预定义变量

在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。

预定义变量含义预定义变量含义ans计算结果的默认变量名NaN或nan不是一个数(NotaNumber),如0/0,eps机器零阈值Inf或inf无穷大,如1/0nargin函数输入宗量数目i或j虚单元nargout函数输出宗量数目pi圆周率realmax最大正实数realmin最小正实数(表1.3-1,必须熟记)

四、赋值语句MATLAB赋值语句有两种格式:(1)变量=表达式(2)表达式一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。在MATLAB语句后面可以加上注释,注释以%开头,后面是注释的内容。

例3.指令的续行输入S=1–1/2+1/3–1/4+1/5–1/6+1/7…-1/8%把表达式的运算结果值赋给变量S例4:预定义变量anssqrt(2)

五、面向复数设计的运算MATLAB的所有运算都是定义在复数域上的。这样设计的好处是:在进行运算时,不必像其他程序语言那样把实部、虚部分开处理。为描述复数,虚数单位用预定义变量i或j表示。有关复数的函数:

real(a)%给出复数a的实部

imag(a)%给出复数a的虚部

abs(a)%给出复数a的模

angle(a)%以弧度为单位给出复数a的相位角例5.复数的运算——表达复数及计算z1=3+4i%经典教科书的直角坐标表示法z2=1+2*i%运算符构成的直角坐标表示法z3=2*exp(i*pi/6)%运算符构成的极坐标表示法z=z1*z2/z3%复数的实虚部、模和幅角计算real_z=real(z)image_z=imag(z)magnitude_z=abs(z)angle_z_radian=angle(z)

%弧度单位angle_z_degree=angle(z)*180/pi %度数单位例6图示复数的和z1=4+3*i;z2=1+2*i; %在一个物理行中,允许输入多条指令。%但各指令间要用“分号”或“逗号”分开。z12=z1+z2%以下用于绘图clf,holdon

%clf清空图形窗。逗号用来分隔两个指令。plot([0,z1,z12],'-b','LineWidth',3)plot([0,z12],'-r','LineWidth',3)plot([z1,z12],'ob','MarkerSize',8)holdoff,gridon,axisequalaxis([0,6,0,6])text(3.5,2.3,'z1')text(5,4.5,'z2')text(2.5,3.5,'z12')xlabel('real')ylabel('image')shg

例7用MATLAB计算能得到–2吗?a=-8;r_a=a^(1/3) %求3次根%先构造一个多项式p=[1,0,0,-a]; %p是多项式的系数向量R=roots(p) %求多项式的根MR=abs(R(1)); %计算复根的模t=0:pi/20:2*pi; %产生参变量在0到2*pi间的一组采样点x=MR*sin(t); y=MR*cos(t); plot(x,y,'b:'),gridon %画一个半径为R的圆holdonplot(R(2),'.','MarkerSize',30,'Color','r')

%画第一象限的方根plot(R([1,3]),'o','MarkerSize',15,'Color','b')

%画另两个方根axis([-3,3,-3,3]),axissquare %保证屏幕显示呈真圆holdoff

六、数据的输出格式数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为:format格式符注意,format命令只影响数据输出格式,而不影响数据的计算和存储。

例8

计算表达式的值,并将结果赋给变量x,然后显示出结果。在MATLAB命令窗口输入命令:x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)%计算表达式的值formatlongformatshorte2.3MATLAB矩阵一、矩阵的建立1.直接输入法

将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例9A=[123;456;789]

2、冒号生成法只生成一维数组(行向量)。一般格式:e1:e2:e3例10

x1=1:0.2:5%创建一维向量x1,步长0.2;1和5为两个终点A=-4:5%创建一维向量A,步长1;-4和5为两个终点B=10:-1:1%创建一维向量B,步长-1;产生递减向量

3、线性定点法:只生成一维数组(行向量)。一般格式:linspace(a,b,n)linspace(a,b,n)与a:(b-a)/(n-1):b等价。例11

x1=1:0.2:5%其等价的命令如下:linspace(1,5,21)

4.利用MATLAB函数建立矩阵几个产生特殊矩阵的函数:zeros、ones、eye、rand、randn。这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:

zeros(m)产生m×m零矩阵zeros(m,n)产生m×n零矩阵。zeros(size(A))产生与矩阵A同样大小的零矩阵

例12

分别建立3×3、3×2和与矩阵A同样大小的零矩阵。(1)建立一个3×3零矩阵:zeros(3)(2)建立一个3×2零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A))

例13建立在区间[10,20]内均匀分布的3阶随机矩阵。

命令如下:

x=10+(20-10)*rand(3)

5.利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。例14利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。(3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。

6.建立大矩阵大矩阵可由方括号中的小矩阵建立起来。例15A=[123;456;789];C=[A,eye(size(A));ones(size(A)),A]

二、矩阵的标识与寻访

矩阵元素MATLAB允许用户对一个矩阵的单个元素进行操作。例16

A=ones(4)A(3,2)=20%将矩阵A第3行第2列元素赋值为20也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。如:A(6)以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。如:sub2ind(size(A),2,3)[I,J]=ind2sub(size(A),6)

2.子矩阵的标识和引用

(1)利用冒号表达式获得子矩阵①A(:,j)表示取A矩阵的第j列全部元素;

A(i,:)表示A矩阵第i行的全部元素;②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;

A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素;

A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。

③利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。例17A=zeros(2,6)

%创建2×6全零数组

A(:)=-3:8

%用一维数组对A赋值,观察赋值的次序

A(2,4)

%取A第2行4列的元素

A(8)

%取A第8号的元素

A(:,[1,3])

%取A第1、3列的所有元素

A([1,2,5,6]‘)%取A第1、2、5、6号元素

A(:,4:end)

%取A第4至最后一列的所有元素

A(2,1:2:5)=[-1,-3,-5]

%把A第2行1、3、5列的元素换为

-1,-3,-5

B=A([1,2,2,2],[1,3,5])

%取A第1、2、2、2行1、3、5列的元素赋给B

(2)逻辑标识法:例18A=zeros(2,5)%创建2×5全零数组A(:)=-4:5%用一维数组对A赋值,观察赋值的次序L=abs(A)>3%用逻辑数组L标记大于3的数islogical(L)%判断L是否为逻辑数组X=A(L)%取出L中逻辑值为1对应的A阵的元素赋给X

三、空数组

某维长度为0或若干维长度均为0的数组。

1.功能:(a)在没有空数组参与的运算时,计算结果中的“空”可以解释为“所得结果的含义";(b)运用空数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。例19空数组的创建:a=[],b=ones(2,0),c=zeros(2,0),d=eye(2,0)

f=rand(2,3,0,4)2.空数组的属性:例20class(a)

%数据类型isnumeric(a)%是数值型数组吗isempty(a)%惟一可正确判断数组是否空的指令whicha%a是什么ndims(a)%数组a的维数size(a)

%数组的大小3.空数组用于子数组的删除和大数组的大小收缩

例21A=reshape(-4:5,2,5)%创建2×5数组A(:,[2,4])=[]

%赋空,使2,3列消失

2.4MATLAB运算一、算术运算

1.基本算术运算

MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。

2.点运算点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。例22

a=ones(3)b=3*aa*ba.*b3.MATLAB常用数学函数(见3.3.1表格) 注意:数学函数exp(),abs(),angle()的意义和用法。这样的函数还有很多,如:sqrt(x)—平方根,round(x)—取整数部分,rem(x,y)—求余,gcd(x,y)—最大公约数,log(x),tan(x),sign(x)—符号函数等,它们可查帮助获得。

二、关系运算

MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。关系运算符的运算法则为:

(1)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。

(2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。

例23

产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。

(1)生成5阶随机方阵A。

A=fix((90-10+1)*rand(5)+10)(2)判断A的元素是否可以被3整除。

P=(rem(A,3)==0)

例24(书例3.5-2)t=-3*pi:pi/10:3*pi; y=sin(t)./t; tt=t+(t==0)*eps; yy=sin(tt)./tt; subplot(1,2,1),plot(t,y),axis([-9,9,-0.5,1.2]),xlabel('t'),ylabel('y'),title('残缺图形')subplot(1,2,2),plot(tt,yy),axis([-9,9,-0.5,1.2])xlabel('tt'),ylabel('yy'),title('正确图形')三、逻辑运算

MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。

逻辑运算的运算法则为:

(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。

(2)设参与逻辑运算的是两个标量a和b,那么,

a&ba,b全为非零时,运算结果为1,否则为0。

a|ba,b中只要有一个非零,运算结果为1。

~a当a是零时,运算结果为1;当a非零时,运算结果为0。

(3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。

(4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。(5)逻辑非是单目运算符,也服从矩阵运算规则。

(6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。例25建立矩阵A,然后找出大于4的元素的位置。

(1)建立矩阵A。

A=[4,-65,-54,0,6;56,0,67,-45,0]

(2)找出大于4的元素的位置。

find(A>4)

例26逻辑、关系操作的组合(书例3.5-3)A=[-2,-1,0,0,1,2,3]L1=~(A>1)%判断A中,哪些元素不大于1L2=(A>0)&(A<2) %判断A中,哪些元素大于0且小于3

例27(书例3.5-4)clear,t=linspace(0,3*pi,500);y=sin(t);z1=((t<pi)|(t>2*pi)).*y;

w=(t>pi/3&t<2*pi/3)+(t>7*pi/3&t<8*pi/3);wn=~w; z2=w*sin(pi/3)+wn.*z1;subplot(4,1,1),plot(t,y,':r'),axis([0,10,-1.5,1.5])ylabel('y'),gridonsubplot(4,1,2),plot(t,z1,':r'),axis([0,10,-0.2,1.5]),ylabel('z1')subplot(4,1,3),plot(t,wn,':r'),axis([0,10,-0.2,1.5]),ylabel('wn')subplot(4,1,4),plot(t,z2,'-b'),axis([0,10,-0.2,1.5]),ylabel('z2')xlabel('t')

2.5字符串1、字符串常量是用单引号括起来的字符序列。例如,‘CentralSouthUniversity’。若字符串中的字符含有单引号,则该单引号字符应用两个单引号来表示。2、字符串变量通常是通过字符串常量与变量进行赋值运算而得到;3、字符串是以ASCII码形式存储的。

abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。

char函数可以把ASCII码矩阵转换为字符串矩阵。

size函数可以得到数组的大小。

例28a='Thisisaexample.'%创建一维串数组size(a)reva=a(end:-1:1)

%翻转字符串a,end是最后一个元素的下标A='这是算例。'ab=[A(1:4),'A.1-2',A(5)]%字符串的运算

abc=double(c)%取ab中字符的ascii码char(abc)%char()和double()是一对反函数

4、eval函数

与字符串有关的一个重要函数是eval,其调用格式为:

eval(t)

其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。例29

t=pi;m='[t,sin(t),cos(t)]';y=eval(m)5、字符串转换函数:例30转换函数产生数码字符串a=[12;34]int2str(a)

%整型数据转换成字符串num2str(rand(2),3)%数值型数据转换成字符串,保持3位有效数字b=mat2str(rand(3),3)%数值数组转换成“数组输入形式”字符串,保持3位有效数字,该字符串可以通过eval函数执行。eval(b)例31综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。(留作实习)clear a=2; w=3; t=0:0.01:10; y=exp(-a*t).*sin(w*t); [y_max,i_max]=max(y); t_text=['t=',num2str(t(i_max))]; y_text=['y=',num2s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论