1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数值数组及其运算,(,二,),2.2.1,矩阵的大小,1.,向量的长度,(,用,length,函数,),a=1 2 3 4 5 6;,length(a,),ans,=,6,2.,矩阵的大小,(,用,size,函数,),size(a,),ans,=,1 6,a=1 2 3;4 5 6;,size(a,),ans,=,2 3,2.2.2,矩阵的拆分,1,矩阵元素,(,引用方法有两种,),(1),通过下标引用矩阵的元素,例如,A=15 20;200 50;A(1,2)=20,(2),采用矩阵元素的,序号,来引用矩
2、阵元素。矩阵元素的序号就是相应元素在,内存中,的排列顺序。在,MATLAB,中,矩阵元素按,列,存储,,先第一列,,再,第二列,,依次类推。例如,A=1,2,3;4,5,6;A(3),ans,=2,显然,序号,(Index),与下标,(Subscript),是一一对应的,以,mn,矩阵,A,为例,矩阵元素,A(i,j,),的序号为,(j-1)*,m+i,。,a=15 20;25 30,a=,15 20,25 30,a(2,2),ans,=,30,a(4),ans,=,30,序号,(Index),与下标,(subscript),相互转换关系,也可利用,sub2ind,和,ind2sub,函数求得
3、sub2ind,下标换算成序号,Ind2sub,序号换算成下标,a=15 20;25 30,a=,15 20,25 30,sub2ind(size(a),2,2),ans,=,4,a=15 20;25 30,a=,15 20,25 30,ind,=1 2 3 4;,i j=ind2sub(size(a),ind),i=,1 2 1 2,j=,1 1 2 2,2,矩阵拆分,(1),利用,冒号表达式,获得子矩阵,A(:,j,),表示取,A,矩阵的第,j,列全部元素;,A(i,:),表示,A,矩阵第,i,行的全部元素;,A(i,j,),表示取,A,矩阵第,i,行、第,j,列的元素。,A(i:i+m
4、),表示取,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,表示某一维的,末尾元素下标。,例,:,a=1 2 3;4 5 6;7 8 9,a=,1 2 3,4 5 6,7 8 9,a(:,2),ans=,2,5,8,a(2,:),ans=,4 5 6,a(1 end,:),ans=,1 2 3,7 8 9,a(1 2,:),ans=,1 2
5、3,4 5 6,a(1 3,:),ans=,1 2 3,7 8 9,b=1 2 3;,a(b,:),ans=,1 2 3,4 5 6,7 8 9,(2),利用,空矩阵删除矩阵的元素,在,MATLAB,中,定义,为空矩阵。给变量,X,赋空矩阵的语句为,X=,。注意,,X=,与,clear X,不同,,clear,是将,X,从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为,0,。,例,:,a=1 2 3;,a=,a=,clear a,a,?Undefined function or variable a.,2.2.3,特殊矩阵,1,通用的特殊矩阵,常用的产生通用特殊矩阵的函数有:,zero
6、s,:产生全,0,矩阵,(,零矩阵,),。,ones,:产生全,1,矩阵,(,幺矩阵,),。,eye,:产生单位矩阵。,rand,:产生,0,1,间均匀分布的随机矩阵。,randn,:产生均值为,0,,方差为,1,的标准正态分布随机矩阵。,例,2-3,分别建立,33,、,32,和与矩阵,A,同样大小的零矩阵。,(1),建立一个,33,零矩阵。,zeros(3)(2),建立一个,32,零矩阵。,zeros(3,2)(3),设,A,为,23,矩阵,则可以用,zeros(size(A,),建立一个与矩阵,A,同样大小零矩阵。,A=1 2 3;4 5 6;%,产生一个,23,阶矩阵,A,zeros(s
7、ize(A,)%,产生一个与矩阵,A,同样大小的零矩阵,(,特殊,),建立一个,222,零矩阵。,zeros(2,2,2),例:,zeros(3),ans,=,0 0 0,0 0 0,0 0 0,zeros(3,2),ans,=,0 0,0 0,0 0,A=1 2 3;4 5 6;,zeros(size(A,),ans,=,0 0 0,0 0 0,zeros(2,2,2),ans(:,:,1)=,0 0,0 0,ans(:,:,2)=,0 0,0 0,2,用于专门学科的特殊矩阵,(1),魔方矩阵魔方矩阵有一个有趣的性质,,其每行、每列及两条对角线上的元素和都相等,。对于,n,阶魔方阵,其元素,
8、n,2,个整数组成。,MATLAB,提供了求魔方矩阵的函数,magic(n,),,其功能是生成一个,n,阶魔方阵。,例,将,101125,等,25,个数填入一个,5,行,5,列的表格中,使其每行每列及对角线的和均为,565,。,M=100+magic(5),M=,117 124 101 108 115,123 105 107 114 116,104 106 113 120 122,110 112 119 121 103,111 118 125 102 109,(2),帕斯卡矩阵我们知道,二次项,(,x+y),n,展开后的系数随,n,的增大组成一个三角形表,称为杨辉三角形。由,杨辉三角形表组成的
9、矩阵,称为帕斯卡,(Pascal),矩阵。函数,pascal(n,),生成一个,n,阶帕斯卡矩阵。,例,求,(x+y),4,的展开式。,pascal(5),ans=,1 1 1 1,1,1 2 3,4,5,1 3,6,10 15,1,4,10 20 35,1,5 15 35 70,矩阵次对角线上的元素,1,4,6,4,1,即为展开式的系数。,基本数学函数,1,常用三角函数,sin,正弦函数,asin,反正弦函数,cos,余弦函数,acos,反余弦函数,tan,正切函数,atan,反正切函数,2,常用双曲函数,sinh,双曲正弦函数,asinh,反双曲正弦函数,cosh,双曲余弦函数,acosh
10、反双曲余弦函数,tanh,正双曲切函数,atanh,反双曲正切函数,应用举例,注意:所对应的角度均为弧度,。,sin(pi/2),ans=,1,sin(90),ans=,0.8940,需用角度时,用函数,sind,sind(90),ans=,1,3.,指数函数,exp,指数函数,log,自然对数函数,log10,常用,(,以,10,为底,),对数因数,log2,以,2,为底对数,pow2,以,2,为底的幂函数,sqrt,平方根函数,例:,log(10),ans=,2.3026,log10(10),ans=,1,log2(16),ans=,4,4,复数函数,abs,模函数,angle,相角函数
11、conj,复共矩函数,imag,复距阵虚部,real,复距阵实部,例:,a=1.5+2j,a=,1.5000+2.0000i,abs(a,),ans,=,2.5000,angle(a,),ans,=,0.9273,conj(a,),ans,=,1.5000-2.0000i,imag(a,),ans,=,2,real(a,),ans,=,1.5000,5.,舍入函数和剩余函数,fix,朝零圆整函数,(,舍掉尾数,),ceil,朝,+,圆整函数,(,取高值返回不小于,x,的下一个整数,),(,5.5 6,),Floor,朝,-,圆整函数,(,取低值返回不大于,x,的下一个整数,),(,5.5 5
12、round,四舍五入函数,rem,求余函数,mod,模除求余函数,sign,符号函数,示例:,0,5,6,5.5,-6,-5,-5.5,floor,fix,floor,ceil,fix,ceil,例:,fix(5.5),ans=,5,fix(-5.5),ans=,-5,ceil(5.5),ans=,6,ceil(-5.5),ans=,-5,floor(5.5),ans=,5,floor(-5.5),ans=,-6,求余函数,mod(x,y,)=x-n.*y,这里,n=,floor(x./y,),rem(x,y,)=x-n.*y,这里,n=,fix(x./y,),mod(3,2),ans=
13、1,mod(-3,2),ans=,1,rem(3,2),ans=,1,rem(-3,2),ans=,-1,符号函数,a=-1 0 1.2;-5.1-3 5,a=,-1.0000 0 1.2000,-5.1000 -3.0000 5.0000,sign(a,),ans,=,-1 0 1,-1,-1,1,数组的函数运算,a=1 2 3;-4 5 6,a=,1 2 3,-4 5 6,log(a),ans=,0 0.6931 1.0986,1.3863+3.1416i 1.6094 1.7918,sin(a),ans=,0.8415 0.9093 0.1411,0.7568 -0.9589 -0.2
14、794,abs(a),ans=,1 2 3,4 5 6,运用技巧举例,某一数值分析中,已知输入参数为光波长,L,输出参数为,n,l,分别计算得到一组数据,:,A1=1,1.4,1e-6,A2=1.5,1.35,1e-7,A3=1.2,1.38,2e-5,A4=2,1.41,3.5e-6,要求绘制,L,与,n,和,l,的关系曲线。,方法一:,L=1 1.2 1.5 2,n=1.4 1.38 1.35 1.41,l=1e-6 2e-5 1e-7 3.5e-6,缺点:不直观;易出错;补充数据复杂,方法二,n=0;,n=n+1;q(n,:)=1,1.4,1e-6;,n=n+1;q(n,:)=1.5,1
15、35,1e-7;,n=n+1;q(n,:)=1.2,1.38,2e-5;,n=n+1;q(n,:)=2,1.41,3.5e-6;,p=,sortrows(q,);,w=p(:,1);,nx,=p(:,2);,lx=p(:,3);,#,sortrows,:,对矩阵按行排序,结果,p=,1 1.4 1e-006,1.2 1.38 2e-005,1.5 1.35 1e-007,2 1.41 3.5e-006,q=,1 1.4 1e-006,1.5 1.35 1e-007,1.2 1.38 2e-005,2 1.41 3.5e-006,降序排序,q(:,1)=1./q(:,1),p=,sortrow
16、s(q,);,p(:,1)=1./p(:,1);,w=p(:,1);,nx,=p(:,2);,lx=p(:,3);,结果,p=,2 1.41 3.5e-006,1.5 1.35 1e-007,1.2 1.38 2e-005,1 1.4 1e-006,关系操作和逻辑操作,所谓的基本逻辑关系运算指的是几乎所有的高级语言所普遍适用的逻辑运算。如大小的比较、逻辑与或非等逻辑关系。,Matlab,自身的特点:,约定,(,1,)所有的关系表达式和逻辑表达式中,输入的任何非,0,数都被看作“逻辑真,”,,,0,被认为“逻辑假”,(,2,)所有的关系表达式和逻辑表达式的计算结果,是由,0,和,1,组成的逻辑数
17、组,,1,表示“真”,,0,表示“假”,(,3,)逻辑数组是特殊的数值数组,但又不完全相同,它还表示对事物的判断结论“真”和“假,”,关系操作,符号运算符 功能 函数名,=,等于,eq,=,不等于,ne,大于,gt,=,大于等于,ge,说明,:,(1),标量可以与任何维数数组进行比较,比较在此标量与每个元素之间进行,因此结果将与被比数组同维,(2),两个数组进行相比必须同维,比较在两数组同位置的元素间进行,【,例,2.13.1-1】,关系运算示例。,A=1:9,B=10-A,r0=(A t=-2*pi:pi/10:2*pi;,y=,sin(t)./t,;,tt,=,t+(t,=0)*,eps,
18、yy,=,sin(tt)./tt,;,subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title,(,残缺图形,),subplot(1,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(yy),title,(,正确图形,),Warning:Divide by zero.,(Type warning off,MATLAB:divideByZero,to suppress this warning.),逻辑操作,&,逻辑与,and,|,逻辑或,or,逻辑非
19、not,说明,:,(1),标量可以与任何维数数组进行逻辑运算,运算比较在此标量与每个元素之间进行,因此结果将与被比数组同维,(2),两个数组进行逻辑运算必须同维,运算在两数组同位置的元素间进行,【,例,2.13.2-1】,逻辑操作示例。),A=1:9;,L1=(A5)%,判断,A,中哪些元素不大于,5,L2=A3&A7,L1=,1 1 1 1 1 0 0 0 0,L2=,0 0 0 1 1 1 0 0 0,【,例,2.13.2-2】,逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。,t=linspace(0,3*pi,500);y=,sin(t,);,%
20、处理方法一:,z1=(t2*pi).*y;%,获得整流半波,w=(tpi/3%,关系逻辑运算和数值运算,w_n,=w;,z2=w*sin(pi/3)+w_n.*z1;%,获得削顶整流半波,subplot(1,3,1),plot(t,y,:r),ylabel(y),subplot(1,3,2),plot(t,z1,:r),axis(0 10-1 1),subplot(1,3,3),plot(t,z2,-b),axis(0 10-1 1),t=linspace(0,3*pi,500);y=,sin(t,);,%,处理方法二:,z=(y=0).*y;%,a=sin(pi/3);,z=(y=a)*,a+(y,a).*z;%,plot(t,y,:r);hold,on;plot(t,z,-b,),xlabel(t),ylabel(z,=,f(t),title,(,逐段解析函数,),legend(y,=,sin(t),z,=,f(t),hold,off,






