第2章-MATLAB数据及其运算_第1页
第2章-MATLAB数据及其运算_第2页
第2章-MATLAB数据及其运算_第3页
第2章-MATLAB数据及其运算_第4页
第2章-MATLAB数据及其运算_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

计算机学院郭江鸿21B434

82519604第二章MATLAB数据及其运算参考教材:MATLAB程序设计与应用(第二版)刘卫国主编高等教育出版社2.1矩阵及其赋值2.2表达式2.3MATLAB的矩阵运算2.4字符串2.5*结构数据和单元数据习题&作业2.1矩阵及其赋值2.1.1矩阵MATLAB中最基本的数据结构是矩阵(matrix)。1*1的矩阵----标量(scalar):[5]或5只有一行或一列的矩阵-----向量(vector):

[1357]

行向量列向量3*3矩阵MATLAB中一个有趣的例子左图所示的为文艺复兴时期德国一个画家兼业余数学家杜勒创作的版画《忧郁者》,其右上角有一个矩阵。杜勒魔方阵163213510118967124151412.1.2矩阵元素赋值矩阵不需维数说明和类型定义,由计算机自动分配其所占存储单元。每个变量代表一个矩阵,矩阵的每个元素都看作复数,默认的数据类型为双精度型。(1)输入矩阵最简单的方法是输入矩阵的元素表,每行的元素之间用空格或逗号隔开,用“;”号作为元素表中每一行的结束符,并用[]将元素表括起来。例如,在命令窗口输入语句:>>a=[123;456;789]则结果为:a=123456789?矩阵赋值的其它方式(2)生成行向量向量的生成归纳为:from:step:to结构。如:y=[0:2:10]得:y=[0,2,4,6,8,10]如果step=1,则可省略,如:x=1:5

则生成一个行向量,x=[12345](3)行向量还可以采用linspace函数产生

linspace(a,b,n)

[a,b]间等间隔的n个元素如:linspace(1,9,5)生成[1

3

5

7

9]

与a:(b-a)/(n-1):b等价

n省略时默认为100(4)使用函数或程序生成矩阵:如:ones(3,2)

生成3x2的全1矩阵;magic(3)

生成3x3的魔方矩阵;randi(5,3,4)生成元素值不超过5的3x4的随机整数矩阵(5)建立大矩阵:如:>>A=[123;456;789];>>B=[A,magic(3);ones(3),A](6)重排矩阵reshape在矩阵总元素不变

的前提下,重排成mxn

的矩阵。

reshape(A,m,n)(7)从外部数据文件装载矩阵建立M文件,输入矩阵,保存文件,运行文件后即自动建立该矩阵。1238164563577894921111231114561117892.1.3矩阵元素的使用>>x=a(1,3)+a(2,2)+a(3,1)矩阵变量名(下标或序号)a(3,2)为

8(或a(6)为

8);下标(Subscript):(行号,列号),行号从上到下,列号从左到右。序号(Index):矩阵元素的存储是按列进行的,顺序是从上到下,从左到右。a=1234567892.1.4矩阵拆分(1)取子矩阵在一个下标处单独一个冒号,表示取出该下标处所对应的全部行或列。a(

:,k)

表示取矩阵a的第k列全部元素。

a(m,

:

)

表示取矩阵a的第m行全部元素。a(m:m+k,:)表示取a矩阵的第m~m+k行的全部元素

。a(:)

将矩阵a的所有元素按列堆叠起来,成为一个列向量。例如:a=magic(3);b=a(:,3)

%取出a矩阵的第三列。c=a(1:2,:)

%取出a矩阵的1到2行。d=a(1:2,1:2)%取出a矩阵1到2行的1至2列。e=a([1,3],:)%a矩阵1和3行的所有列,可以[13]。f=a([1,3],2:end)%取出a矩阵1和3行的2到3列。(2)利用空矩阵删除矩阵的元素

空矩阵[]的维数为0。例:a(2,:)=[];

%删除矩阵的第2行元素得:

a=816492也可以替换元素值:

a([1,3],2:end)=0练习2_1对于一个3x3随机整数矩阵a,元素不大于9

(1)把各行倒置后结果放在a下面。(2)分别计算1,3,5行元素的和,构成列向量b。(3)只保留a矩阵中的2、4、6行,构成矩阵c。2.1.5复数(ComplexNumber)操作复数由实部(realpart)和虚部(imaginarypart)组成。虚数单位用i或j来表示。

6+5i=6+5j例:R=[1,2;4,5];I=[6,7;8,9];ri=R+i*Iri=1.0000+6.0000i2.0000+7.0000i4.0000+8.0000i5.0000+9.0000i或:ri=[1+6i,2+7i;4+8i,5+9i]2.2表达式(Expressions)

表达式表达式由变量、常量、运算符和函数组成。MATLAB对键入的表达式进行翻译和计算,语句的形式通常为:

变量=表达式;或简单地写作:表达式;;分号是可选的,如果该语句的最后一个字符是分号,则在执行词句时不在屏幕上显示结果。>>rho=(sqrt(5)-1)/2

得:rho=0.6180>>a=abs(3+4i)

得:a=5若一个表达式太长,可用续行符...,如:>>z=10*sin(pi/3)*...

sin(pi/3);2.2.1变量(Variables)变量无需类型及维数说明,变量命名规则如下:1、变量名对大小写敏感。(a与A是两个不同的变量)2、变量名的首字符必须是字母,后面跟字母数字下划线。3、函数的命名规则与变量相同。4、变量名应避免使用系统的关键字。如for,while等.例如:变量、函数或m文件命名为2x1.mif

则会出错。whos:显示当前工作空间(WorkSpace)中所有变量的一个简单列表。clear:可以删除工作空间的变量。clc:清命令窗口。常用预定义变量及其含义ans

计算结果的默认赋值变量eps

正的极小值=2.2204e-016,通常称机器零i

j

虚数单位pi

圆周率π的近似值Inf,inf

∞值,无穷大(1/0)NaN,

nan

不定值(0/0,inf/inf)在使用时,应尽量避免对预定义变量重新赋值。如:计算表达式的值,并显示计算结果。

x=(5+cos(47*pi/180))/(1+sqrt(7)-2*i)

其中pi和i都是MATLAB预先定义的变量。课后思考:全面和深入了解eps(实质上是一个函数,表示数据的精度)。2.2.2常量(Numbers)一些数的例子:3-999.63972381.60210e-206.02252e23-3.14159j3e5ipi使用命令>>formattype,来控制数的显示格式。数字显示的格式——可以用help了解formatMATLAB命令pi的显示格式说明formatshort3.1416默认形式,小数点后显示4位数字formatshorte3.1416e+0005位有效数字的科学记数形式formatlong3.1415926535897915位有效数字形式输出formathex400921fb54442d1816位16进制数formatrat355/133近似分数练习2_21、一个运动的球在空中的位置由下式确定:

当x0=10m,v0=15m/s,a=-9.81m/s2,求当t=5s时,x=?答案:x=-37.6250x0=10;v0=15;a=-9.81;t=5;x=x0+v0*t+a*t^2/22、x=3,y=4,在MATLAB中求下式:答案:z=576x=3;y=4;z=x^2*y^3/(x-y)^23、画出下面函数在0x50范围内的图象。结果如右图:>>x=0:0.1:50;>>y=2*exp(-0.2*x);>>plot(x,y)2.3MATLAB的矩阵运算2.3.1算术运算(1)矩阵加减运算:两个同维矩阵,才能进行加减运算,对应元素相加减。一个标量与矩阵相加减时,结果为这个标量与矩阵的每一个元素相加减。x=[2,-1,0;32-4];y=ones(2,3);x-y=?[1,-2,-1;2,1,-5]x+2=?[4,1,2;5,4,-2]

(2)矩阵乘法满足a的列数等于b的行数,则e=a*b;一个标量与矩阵相乘时,结果为这个标量与矩阵的每一个元素相乘。如:x=[1,3,1;2,3,1];

y=[1,2;3,0;7,4];

>>

z=x*y;

>>w=2*x;(3)矩阵除法在线性代数中,本没有矩阵除法,它是由逆矩阵引申来的。MATLAB中,矩阵求逆(Matrixinverse)的函数为:

Y=inv(X)方程A*X=B的解为:X=inv(A)*B=A\B,A\B称为A左除B,左除时要求两矩阵行数相等。方程X*A=B的解为:X=B*inv(A)=B/A,B/A称为A右除B,右除时要求两矩阵列数相等。求解线性方程组6x1+3x2+4x3=3-2x1+5x2+7x3=-48x1-4x2-3x3=-7A=[634;-257;8-4-3];B=[3;-4;-7];x=A\B%A左除B,A与B行数相等x=0.60007.0000-5.4000方程A*x=B

注意:

含有标量的左除和右除结果相同。

如:3/4(4右除3)和4\3(4左除3)都等于0.75

a=[10.5,2.5]时a/5和5\a都等于[2.100

0

0.5000]方程也可写为:

x*A’=B’

A’与B’列数相同则x=B’*inv(A’)=B’/A’%A’右除B’

x相同,只不过是个行向量,x=x1

x2

x3(4)矩阵的乘方

一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。

例如:A=[1,

2

;

4

,

5];B=A^2C=A^0.5得:B=[9,12;24,33]C=[0.5373+0.5373i,0.7339-0.1967i1.4679-0.3933i,2.0052+0.1440i]

A=C*C

%验证C(5)矩阵点运算矩阵中对应元素进行运算,要求两个矩阵的维数相同。设X=[123];Y=[456];运算式输出结果思考??Z=X.*YZ=X.\YZ=X.^YZ=X.^2Z=2.^[XY][x

y]由小矩阵建立大矩阵Z=41018Z=4.02.52.0Z=132729Z=149Z=248163264X*Y能成立吗?有左除右除之分吗?Y./XX^2能成立吗?注意区分矩阵乘法与点乘算式答案A*B???Errorusing==>*Innermatrixdimensionsmustagree.A.*B点运算是MATLAB很有特色的运算,在实际应用中起着很重要的作用。当x=

-2*pi:0.01:2*pi

,求y=sinx*cos8x的值。x=-2*pi:0.01:2*piy=sin(x)*cos(8*x)???(6)常用数学函数三角函数以弧度为单位计算。函数名含义sin正弦函数cos余弦函数tan正切函数sqrt求平方根log自然对数log1010为底的对数abs求绝对值或模gcd最大公因子lcm最小公倍数取整函数例:x=-2.65floor(x)=-3ceil(x)=-2fix(x)=-2round(x)=-3x=2.45floor(x)=2ceil(x)=3fix(x)=2round(x)=2floor:不大于自变量的最大整数ceil:不小于自变量的最小整数fix:向零方向取整round:四舍五入到最邻的整数0123-3-2-1Rem(求余)与mod(模运算)函数都需要x、y具有相同大小的实矩阵或标量当y不为零时,rem(x,y)=x-y.*fix(x./y)

mod(x,y)=x-y.*floor(x./y)

如:

rem(9,4)值为1,mod(9,4)值1

rem(-9,4)值-9-4.*fix(-9./4)

=-9-4.*-2=-1

mod(-9,4)值-9-4.*floor(-9./4)

=-9-4.*-3=3

显然当x和y:

符号相同时,两者结果相等;

符号不同时,结果一般不相等。当y等于零时,rem(x,0)=NaN

mod(x,0)=xrem 求余数mod 模运算实验一Matlab运算基础(1)要求:A矩阵不用手工输入,自动生成。

提示:可以使用reshape函数关系运算的法则:(1)比较量是标量:直接比较两数的大小。若关系成立,结果为1,否则为0。(2)比较量是两个同维矩阵:两矩阵相同位置的元素逐个比较。结果是一个维数与原矩阵相同的矩阵,其元素由0或1组成。(3)一个标量,一个矩阵:标量与矩阵的每一个元素逐个比较,结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。2.3.2关系运算

>,>=,<,<=,~=,==关系运算的结果只能是0(假)或1(真)例:建立4阶方阵A,判断A的元素是否能被3整除A=magic(4)A=16231351110897612414151rem(A,3)1201221201001201p=0010000010110010p=rem(A,3)==02.3.3逻辑运算逻辑量只能取0(假)和1(真)两个值。输入(与)and(或)or(非)not(异或)ExclusiveorABA&BA|B~Axor(A,B)000010010111100101111100逻辑运算法则(1)两个同维矩阵:矩阵相同位置上的元素按规则逐个进行。运算结果与原矩阵同维,其元素由1或0组成。(2)一个是标量,一个是矩阵:标量与矩阵中的每个元素按规则逐个进行。运算结果与矩阵同维,其元素由1或0组成。在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

~高于&和|。如:A=-3:3

L1=~A,L2=A>-2&A<1,L3=~(A>0)结果:

A=

-3-2-10123

L1=

000

1000

L2=

001

1000

L3=

11

11000常用的关系与逻辑运算函数D=1023045678910any(D)函数值:1111all(D)函数值:

0011默认对每个列向量判断,如果矩阵是行向量,则判断该行向量find函数

功能:找出矩阵中非零元素的下标或序号。I=find(expr)

如I=find([2,0,8;0,4,5])返回序号:[R,C]=find(expr)例:建立矩阵A,找出在[10,20]区间的元素的位置。A=[4,15,-45,10,6;56,0,17,-45,0]A=415-4510656017-450A>=10&A<=20

ans=3 6 7 序号(按列)符合条件的元素所在

行号和列号I=

1

4

5

6R=1212C=1233find(

)或者[R,C]=find(A>=10&A<=20)R=

C=

1

22 31 4实验一Matlab运算基础(2)要求:A矩阵不用手工输入,自动生成。

提示:可以使用reshape函数2.4字符串字符串:用单引号括起来的字符序列。字符串用ASCII码形式存储。xm='EastChinaJiaoTongUniversity'MATLAB将字符串当作一个行向量,每个元素对应一个字符。也可以建立多行字符串矩阵,要求各行字符数相等。例:ch=['abcdef';'123456']例:建立一个字符串向量,然后对该向量做如下处理(1)取第1~5个字符组成的子字符串。(2)将字符串倒过来重新排列。(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。(4)统计字符串中小写字母的个数。ch='ABc123d4e56Fg9';subch=ch(1:5)%取子字符串revch=ch(end:-1:1)%将字符串倒排k=find(ch>='a'&ch<='z')%找小写字母的位置ch(k)=ch(k)-32;%将小写字母变成相应的大写字母char(ch)%或者直接输出chlength(k)%统计小写字母的个数实验一Matlab运算基础(3)要求:A矩阵不用手工输入,自动生成。

提示:可以使用reshape函数*2.5结构数据和单元数据(1)结构数据

Matlab通过使用(Structure)数据类型把一组不同类型但同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和应用。结构矩阵名.成员名=表达式例如建立一个含有3个元素的结构矩阵a:a(1).x1=10;a(1).x2=‘liu’;a(1).x3=[11,21;34,78];a(2).x1=12;a(2).x2=‘wang’;a(2).x3=[34,191;27,578];a(3).x1=14;

a(3).x2=‘cai’;

a(1).x3=[13,890;67,231];结构矩阵元素的成员

也可以是结构数据。

a=1x3structarraywithfields:x1x2x3不要求结构矩阵的建立和引用a(2).x3%引用矩阵元素a(2)的成员x3ans=3419127578a(2)%引用矩阵元素a(2)ans=x1:12x2:‘wang’x3:[2x2double]a%引用结构矩阵a

a=1x3structarraywithfields:x1x2x3a结构矩阵(1x3):

(a(1)a(2)a(3))每个元素有3个成员:

x1,x2,x3结

温馨提示

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

评论

0/150

提交评论