MATLAB的介绍与操作(一)Matlab的基本元素ﻫ MATLAB的叙述以运算式为主,其形式有二:ﻫ variable=expression (指定运算式给一个变数) or expression (只是单纯一个运算式)ﻫﻫ运算式由运算子,纯数, 矩阵,
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
, 变数或特殊文字等组成。ﻫ 1.纯数–有整数,实数, 和复数ﻫ 3,-99 ,0.0001,1.60210E-20 , 6.022e23 2i, -3.14159i, -4+3iﻫ 1.1 四则运算 :( +-*/or \)与乘幂(^ )ﻫ 例 : (a)1+2-3*4/5%4/5and5\4 havethesamevalue ans= 0.6000 (b) (2*3)^2-100ans = -64 注: 1. 运算的顺序为^,*或/(\),+或- ,若有括弧,则由括弧内运算优先。 2.a/b 表a除以 b,a\b表 b除以 a。ﻫ 3.我们可将运算式指定给一个变数,然后其值被列印出来,例如: value= (2*3)^2-100value = -64 4.可在运算式后加上分号, 则结果将不会显示出来 1.2Matlab函数库 Matlab 中内建了许多函数, 以下列出少部份函数与一些例子 函 数 功能 abs(x) 对实数为取绝对值,对复数则取其magnitude sign(x) 当x为实数且>0,=0, <0时,则分别回应1,0,-1 当x为复数且≠0时,则回应x/abs(x)值 ceil(x) 取大于或等于x,但最接近x 的整数值 floor(x) 取小于或等于x, 但最接近x的整数值 fix(x) 将x小数点以下的位数,全部舍去 round(x) 将x值做四舍五入log(x) 以自然底数为底的对数函数log10(x) 以10为底的对数函数 sqrt(x) x的开平方根 例 :(a) 2100为几位数ﻫ 解:一般算法为log 2100= 100log2=30.10所以2100为31位数,ﻫ 在Matlab中可用下式算出 n=ceil(log10(2^100))n = 31 (b)3-100在小数点之后第几位数,始为非零小数ﻫ 解 :一般算法为log3-100= (-100)log3=-47.71= -48+0.29所以 3-100在小数点之后第48位, 始为非零小数, 在Matlab 中可ﻫ 用下式算出 n=abs(floor(log10(3^(-100))))n =48 (c)求x2 +x+1=0 的根ﻫ 解:代公式 x1=(-1+sqrt(1^2-4*1*1))/(2*1)x1 =-0.5000+0.8660i x2=(-1-sqrt(1^2-4*1*1))/(2*1) x2=-0.5000-0.8660i 1.3 数值的显示格式 一般来说,当输出结果为整数时,内定显示格式为整数; 当结果为实数时, 内定显ﻫ 示格式为小数点以下四位;当结果为相当大的数时,则以科学符号表示。当然我们ﻫ 可用下列函数,来改变显示格式。 format short 显示出5个十进位数字 format long 显示出15个十进位数字 format shorte 显示出5个十进位数字,并以科学符号表示 formatlonge 显示出15个十进位数字,并以科学符号表示 例:(a) x=sqrt(2) x =1.4142 formatlong x x= 1.41421356237310 formatshort e x x= 1.4142e+000(b) 考虑以下例子,可看出显示格式的重要性ﻫ formatshort A=[pi0;pi/2pi/4]; B=tan(A) B=1.0e+016* -0.0000 0 1.63320.0000 注: 在此,我们将B(2,1)视为无穷大(∞),B(1,2)和B(2,2)相对于B(1,1) 被视为0 但是 tan(pi/4)应为1。因此,我们改以format longe 来看答案。ﻫ formatlonge B B=-1.2246e-016 0 1.633177872838384e+0169.999999999999999e-001 注:同样地,我们将B(1,1)视为0, B(2,1) 视为无穷大(∞),而且可以发现B(2,2) 趋近于1,由此可见,显示格式的重要性。 1.4复数的运算 除了基本 +, -*,/之外, 尚有下列函数的功能:ﻫ real(z) 取复数z 的实数部份 imag(z) 取复数z 的虚数部份 conj(z) 取复数 z 的共轭复数 angle(z) 取复数 z的幅角ﻬ 例: i=sqrt(-1); z=2+3*i; imag(z) ans=3 angle(z) ans = 0.9828 注: 复数的幂次方znﻫ (1)当n为整数时,此与实数时并无不同 例: (3+2*i)^3 ans=-9.0000 +46.0000i (2)当幂次方为分数时, 此为复数z开n 次方根,此时所回应的只有一个解,ﻫ 就是 Principal Value 例:(2+3*i)^(1/3) ans = 1.4519+0.4934i 2.矩阵 详细说明如下(二)如何在Matlab中输入矩阵 方法1:相同列 (row) 的元素以空白分隔,不同列以分号(;)分隔,整个矩阵以中括 弧([] )表示, 且注意每一列所含的元素个数需相同。 例:输入矩阵A=[21-3;579;0 8 -4]ﻫ A=[21 -3;579;0 8 -4]A= 2 1 -3 5 79 0 8 -4 方法2 : 利用Matlab 指令或函数来产生特殊矩阵ﻫ 例:(a) 产生一个33Identity矩阵ﻫ A=eye(3) A= 1 0 0 0 1 0 0 0 1 (b)产生一个34 的矩阵, 其中的元素皆为1 B=ones(3,4)B = 1 1 1 1 1 11 11 1 11 (c)产生一个与B同大小的零矩阵 C=zeros(size(B))C=0 0 0 0 0 0 0 0 0 000 注: 1.size命令显示出矩阵的大小。以上例子每个函数(即eye,ones,zeros)括弧内的语法皆可混合使用。ﻫ 方法3:用指定的值产生向量或矩阵 例: (a)设定元素为-5,-4,... , 4,5的一个向量x x=-5:1:5 %起始值-5,最后值 5, 间隔取1 x= -5 -4-3 -2 -1 0 12 34 5 (b) 设定 元素为-2,-1.6, ...,1.6,2 的一个向量yﻫ y=-2:0.4:2 %起始值-2, 最后值2, 间隔取0.4y=Columns1through7-2.0000 -1.6000 -1.2000-0.8000-0.4000 0 0.4000 Columns8 through11 0.8000 1.2000 1.60002.0000 (c) 产生一向量z为[ 12 35 7922.32.6] z=[1:3 5:2:92:.3:2.6]z= Columns1through7 1.0000 2.0000 3.0000 5.0000 7.0000 9.0000 2.0000Columns 8through 9 2.3000 2.6000 (d) 综合上述方法 1~3,可产生较复杂的矩阵,如 : D=[1.32.5;37.5]; E=[Dones(size(D)) ;zeros(size(D))eye(2,2)] E=1.30002.5000 1.00001.0000 3.0000 7.5000 1.0000 1.0000 0 0 1.0000 0 0 0 0 1.0000 (三)矩阵元素的运算操作 1.取出矩阵的子矩阵(submatrix) 例 :(a) A=[1 20 56;-1-2 348;-5-2 31 9;-59736;27852] n=[135]; subA=A(n,3) %subA为 A矩阵第3行的第1,3,5列元素所组成。A=1 20 5 6 -1-2 3 4 8-5-2 3 1 9 -5 97 3 6 2 785 2subA=0 3 8 注: 在此之前并未指定subA 的大小,就能决定SubA为3×1的行向量。 (b)B=A(n,:) %n = [13 5] %B为A矩阵的第1,2,3列元素所组成。 B = 1 20 5 6 -5-2 3 1 9 2 7 8 52 (c) C=eye(3); %C本为3×3的Identity矩阵 C(:,2)=A(n,2) %现在第2行被 A矩阵第2行的第1,3,5列所取代。 C= 12 0 0-20 0 7 1 注:类似于括弧内冒号(:)的用法另有许多, 简述如下: A(:,j) 取出A 矩阵的第j行(column)。 A(i,: ) 取出A矩阵的第 i列(row)。ﻫ A(:,:) 产生与A相同的矩阵。 A(:) 产生一行向量,其元素为A 矩阵的所有元素(逐行排下来)。ﻫ A( j:k) 取出行向量A(:)的第j个元素, 到第k个元素。ﻫ A( : ,j: k) 取出A 矩阵的第j行到第 k行子矩阵。 A(j:k, :) 取出A矩阵的第 j列到第k列子矩阵。 A(j :k,q:r ) 取出A 矩阵的第j 列到第k列,交集第q行到第r行子矩阵。 2.矩阵运算ﻫ Matlab 除了提供标准矩阵运算(+,-, *,/…等),另有"矩阵元素逐对运算"。其方式可ﻫ 藉由运算子前放置一句点(.)达成。ﻫ 例: A=[1:3;4:6;7:9]; x= 7; A+x %A的每个元素加7ans = 8 9 10 1112 13 14 15 16 A*x %A的每个元素乘7ans= 7 14 2128 35 42 49 56 63 A=[1:3;4:6;7:9]; B=[1:2:5;7:2:11;13:2:17]; A+B %矩阵A与矩阵B对应元素相加 ans= 2 5811 14 17 202326 A-B %矩阵A与矩阵B对应元素相减ans= 0 -1-2-3 -4 -5-6-7 -8 例 :A=[1 2; 34]; B=[56;78]; A*B %此为一般矩阵标准乘法 ans= 192243 50 A^3 %A的3乘幂ans= 37 5481118 A.^3 %矩阵A内每一元素的3乘幂 ans = 1 8 27 64 A.*B %矩阵A与矩阵B相对应的元素逐对相乘 ans= 512 21 32 A.^B %矩阵A内每一元素的乘幂,是与其相对应B矩阵的元素 ans= 1 64 2187 65536 注意:1. 加法与减法只对同大小的矩阵有效。 2.矩阵大小对于乘法,需符合乘法规则。 3. 矩阵的乘幂, 矩阵必须是方阵。 4.矩阵的除法, 我们将于第四项中说明。ﻬ 3. Matlab 函数库ﻫ Matlab对于矩阵与向量,亦提供了许多内建函数。ﻫﻫ 例:(a)转秩矩阵,一般以符号(')来表示ﻫ x=[124] ; A= [12; 45] ; trsp_x=x' trsp_A=A' trsp_x= 1 2 4trsp_A=14 2 5 下面例子是两行向量的内积与外积 y=[12 1]'; z=[2 -1 0]'; inp= y'*z %内积 outp=y*z' %外积inp= 0outp= 2-1 0 4 -2 0 2 -10 (b)复数矩阵(')则产生共轭转秩 i=sqrt(-1); x=[1-i2+3*i 5-2*i]; A=[5+2*i3-i; 2+3*i8-9*i; 3-6*i2+4*i]; x' A'ans = 1.0000+1.0000i 2.0000-3.0000i 5.0000+2.0000ians= 5.0000-2.0000i 2.0000-3.0000i3.0000 +6.0000i 3.0000+ 1.0000i 8.0000 +9.0000i2.0000- 4.0000i 注: i=sqrt(-1)必须要先指定。ﻬ x=[1-i;2+3*i;5-2*i]; y=[121]'; inp=x'*x %内积,x'isconjugate transposeofx outp=x*y' %外积inp= 44outp = 1.0000 -1.0000i 2.0000-2.0000i 1.0000 -1.0000i2.0000 +3.0000i 4.0000 +6.0000i2.0000+ 3.0000i5.0000-2.0000i 10.0000 -4.0000i5.0000 - 2.0000i (c)一些内建函数(abs, ceil, sqrt,round, fix… 等), 对于矩阵,则是作用在 其每一元素上i.e. f(A)=[f(aij)] 。 例:i=sqrt(-1); A=[0-2;2-3;-7.5 1.23;2.9-8]; B=[1+i-pi+i; 0 2-i]; abs(A) abs(B) ans= 02.00002.0000 3.0000 7.50001.2300 2.90008.0000ans=1.41423.2969 02.2361 ceil(A)ans= 0-22 -3-72 3 -8 sqrt(abs(B)) ans= 1.1892 1.81571.4953 round(A) ans=0 -22-3-813 -8 x=[2.45-2.686.29 3.18]; sort(x)%当x为行向量或列向量时,sort(x)表示将x上的元素 %由小而大排列 ans =-2.6800 2.45003.1800 6.2900 A=[4.643-2.564;2.5431.025]; sort(A)%当A为矩阵时,sort(A)表示将A上每一行的元素, %由小而大排列ans= 2.5430 -2.5640 4.6430 1.0250 i=sqrt(-1); z=[1-3*i2+2*i 4-5*i]; sort(z)%当z为复数时, sort(z)表示将z上的元素,根据其 %magnitude值,由小而大排列ans=2.0000+2.0000i1.0000- 3.0000i 4.0000-5.0000i 注:下面这个例子中, 将介绍一个重要的向量计量函数(norm) x=[4 3-2-1]; norm(x,2) %计算出列向量x的2-norm(范数) %相当于计算sqrt(x*x') %x其元素亦可为复数 ans=5.4772 x=[45 15]; norm(x,inf)%计算出列向量x的inf(∞)-norm(范数) %max|xi|,1≦i≦n ans=5 i=sqrt(-1); z=[2-3*i; 1+5*i; 4+5*i]; norm(z,1)%计算出行向量z的1-norm(范数) %Σ|zi|,1≦i≦n ans= 15.1077 (d)处理矩阵的主对角,上三角或下三角的函数diag(A)产生一行向量,其元素为A矩阵主对角线上的元素 但是如果A是一向量,则产生一个主对角矩阵 diag(A,k)产生一行向量,其元素为A矩阵第k对角线上的元素 k>0表示在主对角上方,k<0在主对角下方 triu(A) 产生一与A同大小的矩阵,其主对角线以上的元素与A相同, 其余为零triu(A,k) 产生一与A同大小的矩阵,其第k对角线以上的元素与A相同,其余为零tril(A) 其结果与triu(A)类似,只是将主对角线以上改为以下tril(A,k) 其结果与triu(A,k)类似,只是将主对角线以上改为以下 例: (1) A=[1:4; 5:8;9:12; 13:16] diag(A) %产生一行向量,其元素为A矩阵主对角线上的元素 A= 1 23 45 67 8 91011 12 13 14 15 16ans= 1 6 1116 diag(diag(A))%当diag(A)是行向量时,则diag(diag(A))产生 %一主对角方阵,其主对角线上的元素为diag(A)。 ans= 10 0006 0 000 110 00 016 x=[-54–5]';diag(x)ans= -50 00 4 0 0 0-5 A=[1:4;5:8;9:12; 13:16] diag(A,2) %产生一行向量,其元素为A矩阵第二对角线上的元素A = 1 2 3 4 5 6 78 910 111213 14 15 16ans=38 注:当A为行向量或列向量时, 则diag(A,k)产生一方阵,且其第k对 角线上的元素为A,其余为零。 diag(diag(A,2),2) ans= 0 0 300 00 8 0 0 0 00 0 0 0 (2) A=[1:2:7;9:2:15;17:2:23] %A不一定是方阵 triu(A) %产生一与A同大小的矩阵,其主对角线以上的元素与A相同, %其余为零 A= 1 3 5 7 9 11 13 15 1719 2123ans = 1 3 5 7 0 11 1315 0 0 21 23 triu(A,-1) %triu(A,k)表示,产生一与A同大小的矩阵,其第k对角线以 %上的元素与A相同,其余为零ans = 135 7911 1315 01921 23 tril(A,-1)%tril(A,k)表示,产生一与A同大小的矩阵,其第k对角线以 %下的元素与A相同,其余为零 ans= 0 0 00 900 01719 0 0 (e)关于计算矩阵的函数(如 det ,inv, rank…等) 例: (1) A=[23 6;493;946]; det(A) %此为求A矩阵的行列式值(determinant) ans= -297 (2) A=[24 1; 4 54; 14 5]; inv(A)%此为求A的反矩阵(inverse matrix)ans= -0.2571 0.4571-0.3143 0.4571-0.25710.1143 -0.3143 0.11430.1714 B=[1:3;4:6;7:9]; inv(B)Warning: Matrix is closeto singular orbadlyscaled. Results maybeinaccurate.RCOND= 2.055969e-018.ans=1.0e+016* -0.4504 0.9007-0.4504 0.9007-1.8014 0.9007 -0.4504 0.9007 -0.4504 注:在此出现singular警告,是因为B矩阵的行列式值为零。 以上(1),(2)两个例子,皆需要求A矩阵为方阵 (3)A=[135;454;15 1]; rank(A) %决定A矩阵的秩数 ans = 3 (f)统计向量(或矩阵)的函数 这些函数原则上以向量为主¸若是矩阵则逐一处理矩阵的行向量。 例: (1)x=[1-3 24 5]; sum(x)%决定x列向量的元素值总和 ans=9 (2)x=[14 2 59 456]'; max(x)%决定x行向量中最大的元素值 ans=45 (3) i=sqrt(-1); z=[12+9.2*i;14-8*i;15;-16*i]; min(z)%当z为复数时,min(z)回应向量z中最小magnitude值的元素 ans = 15 (4) A=[1 23;45 6;7 89]; prod(A)%当A为矩阵时,prod(A)将A矩阵每一行上的元素相乘, %存成一新的列向量ans=28 80 162 (5)A=[12 3;456;789]; mean(A) %当A为矩阵时,mean(A)取A矩阵每一行上元素的平均数 %(mean),存成一新的列向量 ans= 4 5 6 (6) i=sqrt(-1); z=[2+i 3+5*i 2-3*i ]; median(z)%当z为向量时,median(z)决定z所有元素的中位数ans= 2.0000-3.0000i 4.矩阵的除法运算 Matlab 提供了左除(\)与右除(/)两种 X=A\B即是解A*X=B X=B/A即是解 X*A=B 左除B必须与A有相同列数,如果A是方阵则依照GaussianElimination 分解A成为LU,然后解 A*X(:,j)=B(:,j), B(:,j)表示矩阵B的第j行。 如果A不是方阵则依照Householder Orthogonalization分解A成为QR,然后解 under/over-determined 方程组A*X(:,j)=B(:,j),依照最小平方差的意义。 右除B/A=(A'\B')' 例1:试解联立方程组 2a- b - c = 4 a- b +c=0 -3a+ 2b -2c =-4 在线性代数里,可以将此方程组写成矩阵乘法,有以下两种形式 (1) A*x =B 其中 A=[2-1-1;1-11; -32-2] x=[a b c]', B=[40 -4]' A=[2-1-1;1-1 1;-32-2]; B=[4;0;-4]; x=A\B%左除x= 4.0000 4.0000 -0.0000 解出a=4 b=4c=0。 (2) x*A =B 其中x=[abc],A=[21-3;-1-12;1 1-1] B=[40-4] A=[21 -3;-1-12;11-1]; B=[4 0-4]; x=B/A %右除x=4.0000 4.0000 0.0000 同样地, a=4b=4 c=0。 例2:Solve thefollowingover-determinedsystemofequations x*s =y,wherex =[-102]',y =[-2 -11]' x=[-102]';y =[-2 -11]'; s= x \y %s是常数s = 0.8000 解出s= 0.8, 表示s=0.8minimizes ∥x*s -y∥2 ,forall s inR 例 3:Solve thefollowingunder-determinedsystem ofequations Ax=b,whereA=[1 1 01 2;30121;22-1 0 -1], b=[5 52]' 我们先利用函数rref观察扩增矩阵[A b],以判断此系统是否有解? A=[1101 2; 30121;2 2-1 0 -1]; b=[55 2]'; rref([Ab])ans= 1.0000 0 0 0 -1.3333-1.0000 01.0000 0 1.00003.3333 6.0000 0 0 1.0000 2.00005.0000 8.0000 由ans得知,此系统有无限多组解 . 再利用A\b得到一组解 A\b ans =1.1333 0.6667 0 0 1.6000 Matlab计算A\b,是利用QR分解的结果,令y=Q'*b;再求x=R\y [Q,R]=qr(A) y=Q'*b; x=R\y Q=-0.2673 0.3586 -0.8944-0.8018-0.5976 0.0000-0.5345 0.7171 0.4472R= -3.7417 -1.3363 -0.2673 -1.8708 -0.801801.7928-1.3148 -0.8367 -0.5976 0 0 -0.4472-0.8944 -2.2361x=1.1333 0.6667 0 0 1.6000(四)如何在Matlab中绘图 1.二维绘图 在Matlab中,提供了许多有关绘图的元件, 更可以在所绘的图形上加入ﻫ 标题, 轴名称,与其他特征,以下列出一些相关函数及其功能 。 函数 功能 plot(x,y) 绘出在向量x,与向量y上相对应元素的点之图形;如果 x,y皆为矩阵, 则绘x的第一行对应y第一行的图,然后逐ﻫ 对x,y重复。 subplot(a,b,c) 将视窗分割成a×b个子视窗,并将图形放置于第c个 子视窗。 title('???') 在图形上方,显示标题。 xlabel('???') 在图形上,标示x轴的名称。 ylabel('???') 在图形上,标示y轴的名称。 grid 在图形上套上格子网。 axis(p) p为4个元素的列向量,分别标示出x轴与y轴的上下界。 hold 用于使多个图形重叠。 注:1. plot可被loglog取代,则绘出全对数图。 2.在绘图时可用其他符号来当绘图点(如:+-.*:- ...等),其方法为在ﻫ plot的参数内,加入一个以引号('')标注的符号,如plot(x,y,'+')。 3. title,xlabel, ylabel, grid皆须置于其所指定的plot函数之后。 例:(a) x =0:0.1:2*pi; y=sin(x) ; plot(x,y) clf%清除先前的图 x=-2*pi:.1:2*pi;y=sin(x); plot(x,y,'+');%点上面画'+'的符号没有连线 xlabel('x-axis');ylabel('y-label'); holdon; %下个图与上图共同在一画面上 y=cos(x); plot(x,y,'r-'); %r-表示用红色线连成图形 grid; holdoff; clf x=0:.1:5;y=2*x.^2-3*x+7; subplot(1,2,1);plot(x,y); xlabel('x-axis'); ylabel('y-axis'); subplot(1,2,2); loglog(x,y,'+');%x,y轴上的单位采取对数值的标准 xlabel('x-axis');ylabel('y-axis'); (d)clf; x=1:.1:5; subplot(2,2,1);plot(x,x); %第一个图形 title('plotofy=x'); xlabel('x-axis');ylabel('y-axis'); subplot(2,2,2); plot(x,x.^2); %注意在此的x.^2,点(.)不可省略 title('plotofy=x^2'); xlabel('x-axis');ylabel('y-axis'); subplot(2,2,3);plot(x,sin(x));%第三个图形 title('plot of y=sinx'); xlabel('x-axis');ylabel('y-axis'); subplot(2,2,4); plot(x,cos(x)); %第四个图形 title('plot ofy=cosx'); xlabel('x-axis');ylabel('y-axis'); 2. 三维绘图 对于函数z=f(x,y),Matlab提供了一套立体绘图功能,其中包括: 1.meshgrid用来产生完整的x-y平面上的点集,以供立体绘图函数所需。ﻫ 2. mesh, surf,surfl,surfc,用来绘出立体图形。ﻫ 3.contour3用来绘制显示出曲面的立体轮廓线。 4.view(a,b) 以不同的位置来观看曲面;特别需注意的是,在view(a,b)中,ﻫ a代表方位角(horizontalrotation),b代表仰角(verticalelevation); Matlab内定值为 a=-37.5。,b=30。。 例:(a) clf; [x,y]=meshgrid(-5:.2:5,-5:.2:5); %产生x-y平面上的点集 z=0.5*x.^2-0.5*y.^2; surfl(x,y,z); %绘制曲面z=f(x,y)附有亮光 view(30,30);%改变观测的角度 axis([-55-55 -1515]) %限定x,y,z轴的范围 xlabel('x-axis');ylabel('y-axis');zlabel('z-axis'); (b)[x,y]=meshgrid(-5:.1:5,-5:.1:5); z=0.5*x.^2+0.5*y.^2; contour3(x,y,z,20);%数字20代表要画出之曲线的数目 axis([-5 5–55030]) xlabel('x-axis');ylabel('y-axis');zlabel('z-axis'); (五)使用Matlab的求助方式,与需注意的陷井和其他事项求助方式help指令在Matlab中,若对任一指令或函数不清楚,则可用help指令,其格式 是在help之后,加上欲查询的指令或函数。 例: helponesONESOnesarray. ONES(N)isan N-by-Nmatrixofones. ONES(M,N)orONES([M,N])isanM-by-Nmatrixof ones. ONES(M,N,P,...)or ONES([MNP...])isan M-by-N-by-P-by-...arrayof ones.ONES(SIZE(A))isthesamesizeas Aandallones.SeealsoZEROS.lookfor指令不同于help指令,lookfor是在其后加上欲查询的关键字, 查询与其相关的指令或函数,关键字从help内容寻找。需注意的陷井 对于档案,变数,与函数的命名须小心,其规则为以英文字母为开头,后加字母 与数字的组合,不可以有空白或标点符号, 且现存的函数名避免使用。 (b) 在 Matlab中,大小写英文字母是有区分的, 而且Matlab函数都是小写字母开头。注意空白的使用,且乘号( *)也不可用空格取代。 例:notebook=45 ﻠ??? tcompact;note book |Missingoperator,comma,or semi-colon. 这个错误讯息是因为 变数名称, notebook中有空白。 clear %清除所有变数 g=pi; G ???ReferencetoaclearedvariableG. 变数G已被清除, 虽然小写g又被指定为pi,但与大G仍有所区分。 x=[12+3*i]y=[12+3*i]%在此空白,造成x,y向量的不同 x = 1.0000 2.0000+ 3.0000iy=1.0000 2.0000 0 +3.0000i x是含有两个元素的向量,y则有三个元素其他事项(储存, 载入,日记档, 查询变数 ...等) 在Matlab中,可做变数的储存与载入,以供下次处理之用,其方法与功能 列于下: 指令 功能 save 将所执行过的变数与其内容, 储存成一个内定的 档案,其档名为matlab.mat savefname 将所执行过的变数与其内容, 储存成 fname.mat档案 savefnamevariables指定所执行过的variables变数与其内容,储存成 fname.mat档案 load 载入档案matlab.mat load fname 载入档案fname.mat (b)相对于save指令,日记档(diary)是用来储存执行过程,而非只是变数的内容, 其使用方法为, 下diaryon 指令, Matlab即开始将所执行的过程与指令记录下来, 直到下diary off 时关闭,并将其存成内定档名diary; 而下diary fnmae是将其 存成指定的档案fname。 (c)对于使用过程中,变数的管理 Matlab提供了下面的函数who列出目前记忆体内的所有变数whos 详细列出目前记忆体内所有变数的资讯 exist 查询一个变数或一个档案是否存在,有五种回应值(0~5), 分别代表ﻫ 0:非变数亦非档案; 1:是一个变数; 2:是一个M-档案; 3:是一个Mex-档案; 4:是一个Simulink函数; 5:是一个Matlab内建函数 clear 清除记忆体内的变数或函数 例 : clear %清除所有变数 a=pi; whos %列出记忆体中的变数exist sin %查询sin是否存在与其属性NameSizeBytesClassa 1x1 8doublearrayGrandtotalis 1elements using8bytesans = 5 注:由ans=5可知,sin为Matlab中的内建函数。ﻬ(六)习题依(a)~(e)的指示, 输入下列的矩阵:A=[505 B =[0 2+i 3-2i C=[1 2 3 050 2-i 0 -5+4i 5 10 15 40 4] 3+2i -5-4i0 ] 369]使用diag 函数, 输入A矩阵。使用zeros函数,输入A与B矩阵,然后再将其他非零元素输入。定义 a=5,b=4,再利用a,b输入A矩阵。定义适当的变数,然后仿照(c),输入B矩阵。利用冒号(:),输入C矩阵。建立一个5×5的矩阵,使用函数sum,求此矩阵第一列和第三行的和。使用函数max, 找出此矩阵中,最大的元素为何?依(a)~ (c)的指示, 解下列方程组: 2x+5y=9 2x +2y=3 分别使用矩阵的除法(/)与(\),解此方程组。利用函数inv,验证与(a)的答案是否相同。将此两条直线, 用函数plot与hold绘出,判断交点是否与(a)(b)相同。 写下下列产生的矩阵A ~E:A=[2:4:17; 3: -2:-4]B=[-1:2.5: 10; pi: 8; 10:-5/3:3]C=[eye(2);5:5:11]D=5+[zeros(3);111]E=[4*eye(4)+ones(4); zeros(1,4)]对于下列矩阵A~D, 利用Matlab中所提供的运算元(: )与等号(=),将原矩阵A~D,分别转换成符合条件(i ),(ii)与(iii)的新矩阵: A= [2 01 B=[35 0-1 -6 2 3 1-320 45-2 ] 4 6-7-4] C = [ 5 1 4 D=[3 61 0 -8 0 7 -12 3 -4 3 -62 -58 12 2 5 -4] 40 03 ]对原矩阵的任意两列,做列交换。使用(i)的方法,使得新矩阵的第(1,1)元素,在其所在行的绝对值为最大者。使用列交换与列加减, 使得新矩阵的第一行,除了第(1,1)元素不为零外, 其余皆为零。使用内积的方法, 求下列每个向量元素平方和的平均。w=[15 526] (c)x =[-2 30152]y=[816-423] (d) z =[ 6 -30 071]令矩阵A= [8-7 6 -5 依下列步骤,回答问题: 40 32 -1 1 47 ]将矩阵A,分成上三角与下三角矩阵, 并分别定义成 U 与 L 。设 A1 =L×U,且令L1为A1的下三角矩阵,U1为A1的上三角矩阵。设A2=L1×U1,重复步骤(ii),试预测An=? , n>3。若A为一个k×k的矩阵,问当n为多少时?An将会是一样的矩阵。写一 Matlab程式在相同的座标轴上,x的范围为-2pi:.02:2pi,绘制函数ﻫ y=cos(x)和y=cos(x3),并使用函数xlabel,ylabel,与title清楚的注解图形。用函数mesh和meshgrid绘制下列函数的立体图:(a) z=8xy*e-x^2-y^2 (b)z= x3/3 -xy2并使用函数 surf和contour重新绘制曲面。