第二部分矩阵_第1页
第二部分矩阵_第2页
第二部分矩阵_第3页
第二部分矩阵_第4页
第二部分矩阵_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

第2章Matlab及其应用2.1MATLAB的基本矩阵运算2.2关系和逻辑运算

2.3矩阵操作2.4时间和日期函数2.5退出和保存工作空间2.6Matlab的变量及数据类型12.1、MATLAB的基本矩阵运算2.1.1简单矩阵输入1、命令行简单键盘输入用于很少数据输入

NaNInf2、文件形式输入文本文件:从文本文件中读入数据mat文件:matlab自有的数据格式>>B=[123;456]B=12345622.1.2语句生成矩阵1、线性等间距格式矩阵(1)X=起始值:增加值:结束值(2)linspace命令a=linspace(1,10,5);(3)logspace命令b=logspace(0,2,10)2、矩阵连接c=[ab];3、用函数生成矩阵:zerosoneseyerandn32.1.3矩阵运算1、矩阵的运算符+:加法-:減法*:乘法;点乘:.*/:右除;右除:./\:左除;左除:.\^:乘方2、矩阵的转置等运算’共轭转置;.’转置inv:矩阵求逆det:求行列式值eig:求特征值与特征向量4运算规则:从左到右;先乘除后加减;乘方运算符最高(1)两矩阵加减A、维数相同时,进行加减运算时,对应的元素进行加减;

B、矩阵与标量加减,用矩阵中的每个元素都与标量进行加减运算;(2)两矩阵相乘

A、前提是前一矩阵的列等于后一矩阵的行,与数学约定一样;

B、矩阵与标量相乘,用矩阵中的每个元素都与标量进行相乘;(3)矩阵中的元素对元素的相乘:.*(4)矩阵中的元素对元素的相除:./.\(5)乘方运算z=x.^yx,y均为向量:z(i)=x(i)^y(i)x为向量,y为标量:z(i)=x(i)^yx为标量,y为向量:z(i)=x^y(i)52.1.4矩阵的超越函数函数名含义abs绝对值或者复数模sqrt平方根real实部imag虚部conj复数共轭round4舍5入到整数fix舍入到最接近0的整数floor舍入到最接近-∞的整数ceil舍入到最接近∞的整数6函数名含义sign符号函数sin正弦cos余弦tan正切asin反正弦acos反余弦atan反正切atan2第四象限反正切函数名含义sinh双曲正弦cosh双曲余弦tanh双曲正切exp自然指数log自然对数log10以10为底的对数72.2关系和逻辑运算

1、关系操作符(1)MATLAB常用的关系操作符有:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、

==(等于)、~=(不等于)。(2)MATLAB的关系操作符可以用来比较两个大小相同的数组,或者比较一个数组和一个标量。在与标量比较时,结果和数组大小一样。(3)如果满足指定的关系,返回1,否则返回0。

»a=1:9;b=a>4b=000011111»c=a(a>4)c=5678982、逻辑操作符(1)逻辑操作符定义了一种与或非的关系表达式。MATLAB的逻辑操作符有&(与)、|(或)、~(非)(2)所有逻辑运算符连接的两个操作数或者同维、同大小,或者其中一个为标量。(3)逻辑运算符都是对元素的操作,每个非零元素都当作“1”处理,逻辑运算的结果是由1和0构成的矩阵。例如:»c=~(a>4)c=111100000»c=(a>4)&(a<7)c=0000110009与逻辑运算有关的函数函数:(1)all(A):c=all(x),则c=1,向量x中全为非零元素;

c=0,向量x中含有零元素(2)any(A):c=any(x),则c=1,向量x中含有非零元素;

c=0,向量x中全为零元素102.3、矩阵操作2.3.1矩阵下标1、MATLAB通过确认下标,可以对矩阵进行插入子块、提取子块、删除子块(删除某些行列)和重排子块的操作。>>B=[123;456;789];>>B(2,:)=[]>>B=1237892、为了提取矩阵a的第n行、第m列的元素值,使用a(n,m)可以得到。同样,将矩阵a的第n行、第m列的元素值赋为r,使用a(n,m)=r这样的命令。

注意:在提取矩阵值时,行或列的值大于矩阵的大小,则出错;在给矩阵赋值时,如果行或者列超出矩阵的大小,则MATLAB自动扩充矩阵的规模,使得可以赋值,扩充部分以零填充。113、利用矩阵下标,MATLAB还提供了子矩阵功能。同样是上面的a(n,m),如果n和m是向量,而不是标量,则将获得指定矩阵的子块.4、矩阵的子块还可以被赋值。如果在取子块时,n或m是“:”,则返回指定的所有行或列。5、矩阵的序号编址:按列计数。122.3.2矩阵大小1、在MATLAB命令行中,使用whos命令可以查看到所有变量的大小。2、为了获得矩阵或者向量的大小,MATLAB还提供了两个有用的函数size和length。(1)size调用:

A、不用参量x时:[m,n]=size(a)。当只有一个输出变量时,size返回一个行向量,第一个数为行数,第二个数为列数;如果有两个输出变量,第一个返回量为行数,第二个返回数为列数。B、当使用x时,只能有一个输出变量:m=size(a,x)

,x=1返回行数,x=2返回列数,这时只有一个返回值。(2)length返回行数或者列数的最大值,即length(a)=max(size(a))。132.3.3矩阵操作函数MATLAB提供了一组执行矩阵操作的函数,例如:

flipud(a)使得矩阵上下翻转,fliplr(a)使得矩阵左右翻转

rot90(a)使矩阵a逆时针旋转90度

rot90(a,k)使矩阵a逆时针旋转k*90度

repmat(A,m,n)平铺矩阵,将矩阵A复制m*n块142.3.4矩阵查找和排序1、子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如:»a=10:20;»find(a>15)ans=78910112、矩阵的排序:sort函数,它将矩阵按照升序排列。152.4时间和日期1、日历函数:calendar2、时间函数:clock3、查看CPU时间:cputime4、日期函数:date5、秒表定时:tictoc162.5退出和保存工作空间:1、save:工作空间中的所有变量保存在磁盘上名为matlab.mat的文件中。2、save[文件名][变量名]将指定的变量保存在指定的文件中。如:>>savetempxyz把xyz这3个变量保存在文件temp.mat中。3、下次加载MATLAB时,可以利用load命令将保存在文件中的变量恢复到工作空间中,其格式为:(1)load将保存在matlab.mat中的变量装入到matlab空间中。(2)load[文件名][变量名]从指定文件中将指定的变量装入到matlab的工作空间中。如:>>loadtempx从文件temp.mat中只将变量x装入到matlab的工作空间中。172.6Matlab的变量及数据类型变量区分字母的大小写名字不能超过31(Matlab6.5版本为不超过65个)个字符变量必须以字母开头,之后可以是任意字母、数字或者下划线变量中不能含有标点符号182.6.1特殊变量特殊变量取值ans用于结果的缺省变量名pi圆周率eps计算机的最小数inf无穷大如1/0nan不等量如0/0iji=j=1-nargin函数的输入变量数目nargout函数的输出变量数目realmin最小的可用正实数realmax最大的可用正实数192.6.2复数不需要特殊的处理,可以直接进行。复数可以表示为:a=10-9i注意:虚部与虚数单位之间不能留空格

函数:complexz=complex(3,4)z=complex(3)z=complex(3,0)202.6.3MATLAB数据类型:数值类型、字符型、稀疏型、单元型、结构型、逻辑类型最常使用的是数值类型和字符型;稀疏型用于稀疏矩阵;单元型和结构型用于编写大型软件;8位型(6.0以上版本:16位型、32位型)用于图象处理。

1、数值类型(double):

在缺省情况下,当结果为整数,作为整数显示;当结果为实数,以小数后4位的精度近似显示。

formatshort(默认)formatlong

2122不同的整型数据之间不能运算,例如:int8(22)*int16(5)×232、字符型(char):>>a=['sss';'bbb']a=sssbbb(1)字符数组的定义:字符数组就是字符串,字符串中的每一个字符在系统内部都相应地表示一个数值。a='Youarewelcome!'

a=Youarewelcome!size(a)

ans=11624相关函数A、函数disp用来显示字符串:disp('Hello')HelloB、判断一个变量是否为字符型数组,可以用函数class或ischar。x=class(a)y=ischar(a)

x=chary=125(2)字符与数值的相互转换:

double:将一个字符串转换为一个数值

char:将数值转换为字符串s='Goodmorning!'s1=double(s)s2=char(s1)

s=Goodmorning!s1=711111111003210911111411010511010333s2=Goodmorning!26(3)二维字符数组:

创建二维字符数组时,每行的长度要相等。如果字符串长度不等,可以用空格充填较短的字符串。例如:s=['abc';'defg']

s=abcdefg

用char函数创建二维字符数组比较方便。当字符串长度不等时,char函数可以自动地在较短的字符中加上一定数量的尾部空格,使其与最长字符串的长度相等。27例如:

y=char('abc','defg','abcde')z1=length(y)z2=size(y)

y=abcdefgabcdez1=5z2=3528(4)字符串的比较

A、strcmp:判别两个字符串是否相等B、strncmp:判别两个字符串的前n个字符是否相等s1='glisten';s2='glitter';a1=strcmp(s1,s2)a2=strncmp(s1,s2,3)

a1=0a2=1注:尾部的空格s1='Thisisagoodexample'strrep(s1,'good','great')strrep(s1,'bad','great')strrep(s1,'','great')A=[‘aaa‘;’bbbbb’]B=strjust(A,’center’)29(5)字符串的合并30313、稀疏型(sparse):含有大量0的矩阵,称为~矩阵。只存储矩阵中的非0元素>>speye(4)生成单位稀疏矩阵ans=(1,1)1(2,2)1(3,3)1(4,4)1sprand均匀分布随机数稀疏矩阵生成函数sparse把满矩阵转化为稀疏矩阵调用格式:sparse(A)sparse(i,j,s,m,n)

i和j为矢量,指矩阵中非0元素的行号和列号,s是一个全部元素为非0的矢量,m和n分别为输出稀疏矩阵的行数和列数

[i,j,s]=find(s)[m,n]=size(s)S=sparse(i,j,s,m,n)324、单元型(cell):把不同类型的数据存储在一起的数组称为单元数组。单元数组中的每个元素是其他任意一种数据类型,通常可以将相关的尺寸大小不同的数据组合在一起。

>>a={1,'good',[123]}a=[1]'good'[1x3double](1)创建单元数组:cellc=cell(n):生成一个n*n维的空数组c=cell(m,n):生成一个m*n维的空数组c=cell(size(A)):生成一个和所包含的数组A阶数完全相同的空数组EX1:A=eye(2)c=cell(size(A))

A=100133c=[][][][]EX2:给单元数组赋值D=cell(1,3)D{1,1}='Good';D{1,2}=[12;45];D{1,3}=1+4i;D

D=[][][]D='Good'[2x2double][1.0000+4.0000i]EX3:利用直接输入的方法创建单元数组,单元数组的下标用圆括号括起来,右边是单元数组的内容,用花括号括起来。Aa(1,1)={['GOOD']};Aa(1,2)={200};Aa(2,1)={5-6i};Aa(3,2)={[12;45]}

Aa='GOOD'[200][5.0000-6.0000i][][][2x2double]34(2)单元数组的显示A、直接显示AaAa='GOOD'[200][5.0000-6.0000i][][][2x2double]B、利用函数显示celldisp(Aa)celldisp(Aa,'Bb')Aa{1,1}=GOODAa{2,1}=5.0000-6.0000iAa{3,1}=[]Aa{1,2}=200Aa{2,2}=[]Aa{3,2}=1245Bb表示显示的名字35C、利用图形显示单元数组cellplot(Aa)

cellplot(Aa,’legend’)(3)单元数组的运算X=cell(2,3)X{1,2}='Welcome';X{1,3}=ones(4);X{2,3}=[123;456;789]Da=sum(X{1,3})Db=sum(X{2,3})

X=[][][][][][]X=[]'Welcome'[4x4double][][][3x3double]Da=4444Db=12151836(4)单元数组的变形E=reshape(X,1,6)cellplot(E)

E=[][]'Welcome'[][4x4double][3x3double](5)字符型单元数组:由于字符矩阵要求矩阵的每一行的长度相等,需要在字符串的尾端加入空格,在读取的时候,又常常将末尾的空格去掉,很不方便。由于单元数组允许不同的单元内有不同类型和长度的数据,问题就可以避免。cellstr:将标准的字符型数组转换为字符型单元数组。EX1:ne=['aaa';'bb'];c

温馨提示

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

评论

0/150

提交评论