2.1变量和数据操作2.2MATLAB矩阵2.3矩阵分析2.4矩阵与数组运算2.5稀疏矩阵2.6字符串2.7单元数据和结构数据第2章MATLAB数据及其运算2.1变量和数据操作1.变量命名①变量名是以字母开头,后接字母、数字或下划线的字符序列,字母间不可留空格②最多63个字符③变量名区分字母大小写Matlab中的所有标点符号必须在英文状态下输入2.1.1变量与赋值例如:b=0.2222b=0.2222;0.22222回车保留变量ans0.22222x=sin(30)/52.定义MATLAB变量:赋值方式赋值变量=赋值表达式方式1:MATLAB提供的一些内部函数常数返回值ans默认变量名,保存最近的结果。如果不给表达式指定一个输出变量,MATLAB会自动将结果保存到ans变量中eps浮点相对精度10-52realmax计算机可以表示的最大浮点数21024realmin计算机可以表示的最小浮点数2-1022pi圆周率i,j虚数单位inf无限值。类似n/0的表达式生成的结果为inf,其中n为非0实数NaN表示不合法的数值值,不定值。类似0/0和inf/inf的表达式生成的结果,与NaN有关的算术运算结果,以及n/0,n为复数时的计算结果都是NaNcomputer计算机类型versionMATLAB版本字符串2.1.2常量(Matlab预定义变量)预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。例.计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))输出结果是:z=-0.3488+0.3286iMATLAB工作空间窗口workspace专门用于内存变量的管理。在工作空间窗口中可以显示所有内存变量的属性。当选中某些变量后,再单击Delete按钮,就能删除这些变量。当选中某些变量后,再单击Open按钮,将进入变量编辑器。通过变量编辑器可以直接观察变量中的具体元素,也可修改变量中的具体元素。1.内存变量的删除与修改2.1.3内存变量的管理Who命令用于显示在MATLAB工作空间中已经驻留的变量名清单。只显示出驻留变量的名称whos命令在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。clear命令用于删除MATLAB工作空间中的变量。利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。MAT文件的生成和装入由save和load命令来完成。savefilename.matvariableloadfilename.matvariable常用格式为:2.内存变量文件保存和调用save文件名变量名表load文件名变量名表1.MATLAB用十进制数表示一个常数,在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。2.数值量和数据格式显示在缺省情况下,当结果是整数时,MATLAB将它作为整数显示;当结果是实数,MATLAB以小数点后4位的精度近似显示。2.1.4数据的输出格式(数值型数据)Format命令的格式格式解释例format短格式(缺省显示格式),同short3.1416formatshort短格式(缺省显示格式),只显示5位3.1416formatlong长格式,双精度数15位,单精度数7位3.14159265358979formatshorte短格式e方式(科学计数格式)3.1416e+000formatlonge长格式e方式3.141592653589793e+000formatshortg短格式g方式3.1416formatlongg长格式g方式3.14159265358979formatcompact压缩格式formatloose自由格式format+/formatbank/formatrat/formathex(详情查看联机帮助)2.2.1矩阵的创建2.2.2矩阵的重组2.2.3矩阵信息命令2.2MATLAB矩阵2.2.1矩阵的创建1.直接输入法2.冒号的特殊用法3.特殊函数创建法2.2.1矩阵的创建123456789矩阵用方括号“[]”括起A=[123;456;789]矩阵同一行中的元素之间用空格或逗号分隔矩阵行与行之间用分号分开1.直接输入法矩阵元素可以是任何数值表达式矩阵元素可以是不含未知数的变量的表达式例:x=[-1.3,sqrt(3),(1+2+3)*4/5]例:x=5;y=[-1.3,cos(x),x/5]R=[123;456],M=[111213;141516]CN=R+i*M,CN=1+11i2+12i3+13i4+14i5+15i6+16i复数矩阵输入——矩阵相加法名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag复数虚部复数函数a=[1+2i,2;5,3-8i];c=[a,2*a+i;sin(a/4),3.5+i*a]复数矩阵输入——直接输入法2.冒号的特殊用法冒号(:)生成等差元素向量。a是首相,b是步长,C是最后一项如b=1步长=1可以省略a:cx=[0:0.5:2]x=00.50001.00001.50002.0000y=[0:3]y=01.00002.00003.00004.00005.0000a=[0:3;1:4]a=01231234a:b:cA(:)A的所有元素A(:,:)二维矩阵A的所有元素A(:,k)A的第k列,A(k,:)A的第k行A(k:m)A的第k到第m个元素A(:,k:m)A的第k到第m列组成的子矩阵A(i:j,m:n)表示由矩阵A的第i到第j行和第m到第n列交叉线上的元素组成的子矩阵。例:A(1,:)A(:,1:3)A(:,:)可利用冒号提取矩阵的整行或整列。矩阵元素的标志:全下标:A(i,j)第i行第j列元素单下标:A(k)第k位置的元素3.提取矩阵的部分元素:冒号运算符sub2indind2sub标志转换linspace函数例:x=linspace(0,pi,12)x=00.28560.57120.85681.14241.42801.71361.99922.28482.57042.85603.1416函数法:生成等差元素向量。从a开始,到b结束,包含n个数据元素的数组linspace(a,b,n)零矩阵zeroszeros(n)产生n×n零矩阵zeros(m,n)产生m×n零矩阵。zeros(size(A))产生与矩阵A同样大小的零矩阵壹矩阵onesones(n)产生n×n壹矩阵ones(m,n)产生m×n壹矩阵。ones(size(A))产生与矩阵A同样大小的壹矩阵单位矩阵eye生成一个主对角线全为1的单位矩阵,eye(n)产生n×n单位矩阵eye(m,n)产生m×n单位矩阵eye(size(A))产生与矩阵A同样大小的单位矩阵随机矩阵rand产生0~1间均匀分布的随机矩阵,如上形式rand(n),rand(m,n),rand(size(A))randn产生均值为0,方差为1的标准正态分布随机矩阵如上形式randn(n),randn(m,n),randn(size(A))randperm创建一个矢量(1×n的矩阵),randperm(4)=3124(1)通用特殊矩阵的生成4.特殊函数创建法例建立随机矩阵:(1)在区间[20,50]内均匀分布的5阶随机矩阵。(2)均值为0.6、方差为0.1的5阶正态分布随机矩阵。命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)(2)专门学科特殊矩阵魔术矩阵magic(n)矩阵的每行、每列、及两条对角线的元素之和都相等希尔伯特Hilb(n)Hilbert(n)有名病态矩阵,每个元素是希尔伯特矩阵的逆的函数invhilb(n)帕斯卡pascal(n)就是杨辉三角形矩阵,第1行和第1列都为1,其余元素为其相邻的右面和上面元素之和。二次项(x+y)n展开后的系数,随n的增大组成一个三角形表,称为杨辉三角形。范德蒙德vander(v)最后一列全为1,倒数第二列为一个指定的向量V,其他各列是其后列与倒数第二列的点乘托普利兹toeplitz(x,y)矩阵除第一行和第一列外,其他每个元素都与其相邻左上角的元素相同.用法:toeplitz(x,y)或者(x),这里x和y都为向量,生成以x为第一列,y为第一行的toeplitz矩阵伴随矩阵compan(p)其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。(,)()^()AijVinj1(,)1Aijij魔术矩阵magic(3)ans=816357492希尔伯特矩阵hilb(3)ans=1.00000.50000.33330.50000.33330.25000.33330.25000.20001(,)1Aijij范德蒙德(,)()^()AijVinj帕斯卡pascal(3)ans=111123136例求二次项(x+y)5的展开式矩阵次对角线上的元素1,5,10,10,5,1即为展开式的系数。pascal(6)ans=111111123456136101521141020355615153570126162156126252托普利兹z=toeplitz(x,y)z=1.00003.00005.00002.33331.00003.00003.66672.33331.00005.00003.66672.3333x=linspace(1,5,4)x=1.00002.33333.66675.0000y=1:2:5y=135可使用命令:compan(p);p=[1,0,-7,6];求多项式的x3-7x+6的伴随矩阵2.2.2矩阵的重组1.矩阵的合并2.矩阵行列的删除3.矩阵的部分修改4.矩阵的结构改变5.矩阵的抽取1、矩阵合并(1)矩阵构造符[]123456457810116912+=1234564578101169123×23×33×5123456457869+≠1234564578693×22×3在竖直方向合并矩阵A和B:在水平方向合并矩阵A和B:表达式C=[AB]表达式C=[A;B](列相同)(行相同)(2)矩阵合并函数:函数描述cat沿指定的维方向串接成高维数矩阵horzcat沿水平方向串接成高维数矩阵vertcat沿垂向方向串接成高维数矩阵repmat通过复制和叠置矩阵来创建新矩阵Cat(1,A,B)垂直Cat(2,A,B)水平Horzcat(A,B)水平vertcat(A,B)垂直Repmat(A,m,n)2.矩阵的部分修改A(m,n)=a表示修改矩阵中第m行第n列元素;A(m,:)=[a,b,...]表示修改矩阵中第m行所有元素;A(:,n)=[a,b,...]表示修改矩阵中第n列所有元素。A(m;n,k:j)=[a,b,...]表示修改矩阵中第m到n行和k到j列所有元素调用格式:a=magic(6)a=351626192433272123253192222720828331710153053412141643629131811a(1:3,3:6)ans=626192472123252222720a(1:3,3:6)=2a=351222233222223192222828331710153053412141643629131811a(1:3,3:6)=rand(3,4)a=35.00001.00000.42180.95950.84910.75773.000032.00000.91570.65570.93400.743131.00009.00000.79220.03570.67870.39228.000028.000033.000017.000010.000015.000030.00005.000034.0