
matlab复习题及答案.docx
17页两个相加矩阵中有一个为标量,则自动将该标量扩展成同阶等元素矩阵,与另一个矩阵相加例:>> x=[-1 0 1];y=x-1 y = -2 -1 0检查矩阵阶数的语句size例:>> [n,m]=size(A) n =2 m =3(2行3列)检查一维矩阵长度的语句length 例:>> length(x) ans = 3 例:建立与矩阵A同样大小的零矩阵 >> A=[1 2 3;4 5 6]; >> zeros(size(A)) ans = 0 0 0 0 0 0 >> zeros(2,3) ans = 0 0 0 0 0 0假定有两个矩阵A和B,A为m×n矩阵,B为n×p矩阵(A的列数= B的行数),则C=A*B为m×p矩阵如两个乘数之一是标量,用该标量乘以矩阵的每个元素例:>> pi*x ans = -3.1416 0 3.1416例: 先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
A=ones(5,5); D=diag(1:5); D*A例:给出下面Matlab语句的显示结果 A=[1,2,3;4,5,6;7,8,0];A(1,:)*A(:,3) ans = 15设A=[1 2 3;4 5 6] B=[2 4 0;1 3 5]D=[1 4 7;8 5 2;3 6 0] 算式运行结果A*B??? Error using ==> mtimesInner matrix dimensions must agree.A'*B6 16 209 23 2512 30 30A*B'10 2228 49D\A??? Error using ==> mldivideMatrix dimensions must agree.D\A'-0.0370 00.5185 1.0000-0.1481 0A/D0.4074 0.0741 0.00000.7407 0.4074 0.0000矩阵除法可用来求解线性方程组例:求解方程组此式可写成矩阵形式源程序如下:>> A = [-1 1 2; 3 -1 1; -1 3 4];>> b = [2;6;4];>> x = inv(A)*b x = 1.0000 -1.0000 2.0000语句>> x = A\b 得到同样运行结果设则 D^2= 54 66 15 2.^D= 2 16 128 54 69 66 256 32 4 51 42 33 8 64 1矩阵的左右翻转 将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
函数形式: fliplr(A) 例:>> B=fliplr(A) B = 0 6 1 8 1 7 5 3 2 2 9 4矩阵的上下翻转 对矩阵A实施上下翻转的函数为flipud例:>> fB=flipud(A) fB = 4 9 2 2 3 5 7 1 8 1 6 0阶数重组 例:>> reshape(A,2,6) ans = 8 4 5 6 2 1 3 1 9 7 0 2提取或建立对角阵 A=diag(V,K) V:某个向量,K:向量V偏离主对角线的列数K=0表示V为主对角线;K>0表示V在主对角线以上;K<0表示V在主对角线以下例:>> v=[1 2 4 5]; >> diag(v,2) ans = 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 01.求下列联立方程的解源程序如下:>> A=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10];>> b=[4;-3;9;-8];>> inv(A)*b ans = -1.4841 -0.6816 0.5337 -1.24292. 先建立3×3的随机矩阵A,然后将A的第一行元素乘以1,第二行乘以2,第三行乘以3。
源程序如下:>> A=rand(3,3)A = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214>> D=diag(1:3);>> D*Aans = 0.9501 0.4860 0.4565 0.4623 1.7826 0.0370 1.8205 2.2863 2.4642数组寻址 对数组中单个或多个元素的访问方式 单个元素的寻址 例:>> A=rand(1,8) A = 0.1934 0.6822 0.3028 0.5417 0.1509 0.6979 0.3784 0.8600 寻址A的第四个元素 >> A(4) ans = 0.5417 一块数据的寻址 连续元素的寻址,利用冒号实现 >> A(2:6) ans = 0.6822 0.3028 0.5417 0.1509 0.6979 >> A(4:end) ans = 0.5417 0.1509 0.6979 0.3784 0.8600 Matlab提供了参数end表示数组的结尾多个不连续元素的寻址,用中括号实现 >> A([1 3 4 5]) ans = 0.1934 0.3028 0.5417 0.1509 >> A(6:-2:1) ans = 0.6979 0.5417 0.6822 例:>> X=[3,7,5;0 4 2] X = 3 7 5 0 4 2 >> sort(X,1) ans = 0 4 2 3 7 5 >> sort(X,2) ans = 3 5 7 0 2 4等间隔数组赋值方法:用两个冒号组成等增量语句,格式:t=[初值:增量:终值]例:>> t=[0:0.2:1] t = 0 0.2000 0.4000 0.6000 0.8000 1.0000 增量可设为负值,但初值应大于终值。
增量为1时,可省略例:>> k=1:5 k = 1 2 3 4 5例:>> theta=linspace(1,2*pi,5)theta = 1.0000 2.3208 3.6416 4.9624 6.2832运算示例:>> X=[1 2 3];Y=[4 5 6];>> Z=X.*YZ = 4 10 18 Z=X.\YZ = 4.0000 2.5000 2.0000提问:元素群有没有左除右除之分?>> Z=X.^YZ = 1 32 729 提问:X^Y成立吗?Z=X.^2Z = 1 4 9提问:X^2成立吗?>> Z=2.^[X Y]Z = 2 4 8 16 32 64提问:2^[X Y]成立吗?例: >> x=[0:0.1:pi/4]'; >> disp(' x sin(x) cos(x) tan(x)') 运行结果 x sin(x) cos(x) tan(x) disp后括号内引号中的内容是直接显示的 disp后括号内是变量名组成的矩阵, 显示该矩阵中各元素的值。
disp([x sin(x) cos(x) tan(x)])运行结果: 0 0 1.0000 0 0.1000 0.0998 0.9950 0.1003 0.2000 0.1987 0.9801 0.2027 0.3000 0.2955 0.9553 0.3093 0.4000 0.3894 0.9211 0.4228 0.5000 0.4794 0.8776 0.5463 0.6000 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8423例:>> A=[1 2 -1 -5];B=[0 2 3 1]; >> A>B ans = 1 0 0 0 >> A~=B ans = 1 0 1 1 >> a=2+2==4 a = 1 %关系运算的优先级高于赋值运算例:生成3阶魔方矩阵,将矩阵中被3整除的元素标记为1。
>> A=magic(3)A = 8 1 6 3 5 7 4 9 2>> p=(rem(A,3)==0)p = 0 0 1 1 0 0 0 1 0常用函数说明: [j,k]=find(p) % 给出p矩阵中不为零元 素的两个下标 find(p) % 给出p矩阵中不为零 。
