1、MATLAB 简介MATLAB(MATrix LABoratory,即矩阵实验室)是 MathWork 公司推出的一套高效率的数值计算和可视化软件。MATLAB 是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB 语言之所以如此受人推崇是因为它有如下这些优点:1.编程简单使用方便MATLAB 的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在 MATLAB 环境下,
2、数组的操作与数的操作一样简单。MATLAB 的矩阵和向量操作功能是其他语言无法比拟的。2.函数库可任意扩充由于 MATLAB 语言库函数与用户文件的形式相同,所以用户文件可以像库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。3.语言简单内涵丰富MATLAB 语言中最重要的成分是函数,其一般形式为:Function a,b,c=fun(d,e,f)其中,fun 是自定义的函数名,只要不与库函数名相重,并且符合字符串的书写规则即可。这里的函数既可以是数学上的函数,也可以是程序块或子程序,内涵十分丰富。每个函数建立一个同名的 M 文件,如上述函数的文件名为 fun.m。这种文件简单、短小
3、、高效,并且便于调试。4.简便的绘图功能MATLAB 具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要在坐标图上加标题。坐标轴标记。文本注释及栅格等,也可一指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。5.丰富的工具箱由于 MATLAB 的开放性,许多领域的专家都为 MATLAB 编写了各种程序工具箱。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。第二章 基本语法21 变量及其赋值1标识符与数2矩阵及其元素的赋值变量=表达式(数)a=1 2 3
4、; 4 5 6;7 8 9x=-1.3 sqrt(3) (1+2+3)/5*4x(5)=abs(x(1)a(4,3)=6.5a(5,:)=5,4,3b=a(2,4,1,3)a(2,4,5, : )=a/7元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。元素用()中的数字(下标)来注明,一维用一个下标,二维用两个下标,逗号分开。如果赋值元素的下标超过原来矩阵的大小,矩阵的行列会自动扩展。全行赋值,用冒号。提取交点元素;抽取某行元素用空矩阵。3复数c=3+5.2iz=1+2i,3+4i; 5+6i,7+8iz=1,3; 5,7+2,4; 6,
5、8*if=sqrt(1+2i)f*fw=z (共轭转置)u=conj(z) (共轭)v=conj(z) (转置)复数的虚数部分用 I 或 j 表示,如曾用过 i, j 作变量,用 clear i,j复数矩阵有两种赋值方法:将其元素逐个赋予复数;将其实部和虚部矩阵分别赋值。Z复数矩阵共轭转置:行列互换,各元素的虚部反号。函数 conj(z)共轭:只把各元素的虚部反号。转置 conj(z) :行列互换。4.变量检查whowhosinfNaN检查工作空间中的变量;变量的详细特征无穷大 1/0;非数(Not a Number) 0/0 inf/inf 0*inf。系统部停止运算,结果仍为 inf 或
6、NaN。 5.基本赋值矩阵f1=ones(3,2)f2=zeros(2,3)f3=magic(3)f4=eye(2)f5=linspace(0,1,5)fb1=f1,f3;f4,f2fb2=fb1;f5全 1 矩阵全 0 矩阵魔方矩阵:元素由 1 到 nn 的自然数组成,每行、每列及两对角线上的元素之和均等于(n 3+n)/2。单位矩阵是 nn 阶的方阵。对角线上元素为 1。线性分割函数大矩阵可由小矩阵组成,其行列数必须正确,恰好填满全部元素。22 矩阵的初等运算1矩阵的加减乘法i. 加、减法:相加减的两矩阵阶数必须相同,对应元素相加减。n,m=size(fb2) 语句 size 检查矩阵阶数
7、,两矩阵相加,阶数必须相同。x=-1 0 1; y=x-1 两相加减的矩阵中有一个是标量时,MATLAB 将标量扩展成同等元素矩阵,与另一矩阵相加减。ii.矩阵乘法 np 阶矩阵 A 与 pm 阶矩阵 B 的乘积 C 是 nm 阶矩阵。P 是 A 阵的列数,B 阵的行数,称为两个相乘矩阵的内阶数。两矩阵相乘的必要条件是内阶数相等。C(i,j)= kA(i,k)B(k,j)值为 A 阵第 i 行和 B 阵第 j 列对应元素乘积的和。pi*xx*yy*xeye(3)*aa*eye(3)a=1 2 3; 3 -5 4; 7 8 9x=x1,x2,x3b=2;0;2ax=b x=ab标量与矩阵相乘,不
8、检查阶数,标量乘以矩阵的每一个元素。X 与 y 内阶数不同,将 y 转置 y。读作 x 左乘 y。X 右乘 y。左、右乘结果不同,只有单位矩阵例外。单位矩阵乘以矩阵 A,左、右乘结果仍等于该矩阵。方程组 x1+2x2+3 x3=2 可以表示为 ax=b3 x1-5 x2+4 x3=07 x1+8 x2+9 x3=22矩阵的除法及线性方程组的解AV=IV=A-1V=inv(a) inv(a)*aD*X=B inv(D)*D*X=inv(D)*B inv(D)*D=I I*X=XX=inv(D)*B=DBX=DBX*D=B X=B*inv(D)=B/Da=1 2 3;4 5 6b=2 4 0; 1
9、 3 5d=1 4 7; 8 5 2; 3 6 0a*ba*ba*bdadaa/dA=6 3 4; -2 5 7; 8 -4 -3B=3;-4; -7X=ABnn 阶方阵 A 和同阶的方阵 V 相乘,得出 n 阶单位矩阵 I。I 为 eye(n)。V 是 A 的逆阵。V 存在条件:A 的行列式不等于 0,det(A)0V=A-1MATLAB 内部函数 inv,得出 A 的逆阵 V。D 与 B 行数相等两端同时左乘以 inv(D) 逆阵单位阵DB 为 D 左除 B,左除时阶数检查条件:两矩阵的行数必须相等。未知矩阵在左D 的逆阵右乘以 B,记作 /D 右除。右除时阶数检查条件:两矩阵的列数必须相
10、等。解线性方程组 Ax=B 6x1+3x2+4x3=3 -2 x1+5 x2+7 x3=-48 x1-4 x2-3 x3=-73矩阵的乘方和幂次函数MATLAB 的运算符*、/、和,指数函数 expm、对数函数 logm 和开方函数 sqrtm 是对矩阵进行的,即把矩阵作为一个整体来运算。除此以外,其他 MATLAB 函数都是对矩阵中的元素分别进行,英文直译为数组运算(Array Operations) ,译为“元素群运算”S=1 2; 3 4D=1 4 7; 8 5 2; 3 6 0D22.DDSU1=sqrtm(S)U2=sqrt(S)V1=expm(S)V2=exp(S)logm(D)l
11、og(D)幂次运算:矩阵为底数,指数是标量,同矩阵乘法一样,为保内阶数相同,底数的矩阵必须是方阵。矩阵是指数,底数是标量,矩阵也必须是方阵。底数和指数不能同时为矩阵。按矩阵运算,等于 D* D按元素群运算非法运算按矩阵运算,求平方根,可以用 U1* U1=S按元素群运算,U2* U2S,U2 .U2=S按矩阵运算按元素群运算 按矩阵运算按元素群运算4矩阵结构形式的提取与变换A=8 1 6 0; 3 5 7 1; 4 9 2 2B1=fliplr(A)B2=flipud(A)B3=reshape(A,2,6)B4=rot90(A)B5=diag(A)B6=tril(A)B7=triu(A)B8=
12、A(: )提取矩阵中某些特殊结构的元素,组成新的矩阵,改变矩阵结构。fliplr 矩阵左右翻转flipud 矩阵上下翻转reshape 阶数重组(元素总数不变)rot90 矩阵整体反时针旋转 90 度diag 提取或建立对角阵tril 取矩阵的左下三角部分triu 取矩阵的右上三角部分将元素按列取出排成一列23 元素群运算1. 数组及其赋值数组是单行或单列的矩阵,一个 N 阶的数组可以表述为一个 N 组向量。t=0 : 0.02 : 1z=10 : -3: -5k=1 : 6theta= linspace (0, 2*pi, 9)w=logspace (0, 1, 11)(1) 用两个冒号组成
13、等增量语句格式:t=初值:增量:终值增量也可以设为负值,此时初值要比终值大增量为 1 时,增量值可以省略。(2) 用 linspace 函数格式:linspace(初值、终值、点数)logspace 函数,自变量按等比级数赋值。从 10 的 0 次幂到 1 次幂之间按幂等分为 11 点(数是等比的)2. 元素群的四则运算和幂次运算元素群的运算是矩阵中所有元素按单个元素运算。运算符前加.号,表示元素群运算。元素群的运算的两个矩阵必须是同阶的。 (标量会自动扩展为同阶矩阵参与运算)x=1, 2, 3y=4, 5, 6z=x.*yz=x.yz=x.yz=x.2z=2.x yd=1 4 7; 8 5
14、2; 3 6 0dd3d.33.d3dx*y 不能成立元素群没有左除右除之分xy 能成立吗?x2 能成立吗?2x y 能成立吗?元素群的幂次运算是各个元素自行作幂次运算,对每个元素的这种运算和对标量运算一样。但是,不能将元素群运算称为数组运算。区别以下运算输入算式 d d3 d.3输出结果 1 4 78 5 23 6 0627 636 510804 957 516486 612 4411 64 343512 125 827 216 03.d3 81 21876561 243 927 729 13d1.0e+005 *2.6388 - 0.0000i 3.0233 + 0.0000i 1.975
15、4 + 0.0000i3.4735 - 0.0000i 3.9797 + 0.0000i 2.6003 + 0.0000i2.3170 - 0.0000i 2.6546 + 0.0000i 1.7345 + 0.0000i3元素群的函数除矩阵运算的乘、右除、左除、幂指数( / ) 、sqrtm、expm、logm 函数外,基本函数库中的常用函数都可用于元素群运算。自变量可以是任意阶的矩阵。基本函数库(elfun)sin 正弦 acot 反余切 atanh 反双曲正切tan 正切 csch 双曲余割 sec 正割acos 反余弦 asech 反双曲正割 cot 余切atan2(x,y) 4 象限
16、反正切acoth 反双曲正切 acsc 余割cosh 双曲余弦 cos 余弦 sech 双曲正割acosh 反双曲余弦 asin 反正弦 coth 双曲余切asinh 反双曲正弦 atan 反正切 acsch 反双曲余割csc 余割 sinh 双曲正弦三角函数asec 反正割 tanh 双曲正切exp 以 e 为底的指数pow2 2 的幂 log 自然对数log2 以 2 为底的指数nextpow2 比输入数大而最近的 2的幂log10 以 10 为底对数指数函数sqrt 方根abs 绝对值和复数模值unwrap 去掉相角突变isreal 是实数时为真real 实部 angle 相角 cplx
17、pair 按复数共轭对排序元素群复数conj 共扼复数 imag 虚部round 四舍五入为整数ceil 向舍入为整数rem(a,b) a 整除 b,求余数floor 向-舍入为整数sign 符号函数取整函数fix 向 0 舍入为整数mod(x,m) X 整除 m 取正余数x=0: 0.1: pi/4x=0: 0.1: pi/4x, sin(x) cos(x) tan(x)disp(显示 x sin(x) cos(x) tan(x)disp(x, sin(x) cos(x) tan(x)例:从列一个三角函数表看元素群运算的优越性。x 赋值,转置为一个列向量。sin(x) cos(x) tan(
18、x)都是对 x 有效,得出与 x 同阶的列向量。显示语句,括号内引号中的内容直接显示,空格、汉字都能显示。方括号内是变量名组成的矩阵,就显示该矩阵中个变量的值。2.4 逻辑判断及流程控制1关系运算a= 2+2=4a=(2+2=4)a=(33)a=(34)a=(4=3)a=(3=4)a=(3=4)A=magic(6)rem(A,3)p=(rem(A, 3)=0)lp=find (p)等于小于小于等于大于大于等于不等于魔方矩阵,每行、每列、对角线的元素之和=(n 3+n)/2A 整除 3,求余数余数为 0,是真,即整除找出 p 矩阵中不为零的元素的序号,矩阵元素是按列排序号的。矩阵元素的序号排法
19、nm 阵中下标为(j,k)的元素序号为 l=(k-1)*n+j1 7 13 19 25 312 8 14 20 26 323 9 15 21 27 334 10 16 22 28 345 11 17 23 29 356 12 18 24 30 36符号 意义 符号 意义 符号 意义+ 加 - 减 * 矩阵乘 矩阵左除 / 矩阵右除 矩阵乘幂.* 矩阵元素乘 ./ 矩阵元素除 . 矩阵元素乘幂()优先,下标输入参量 矩阵,向量输入变量: 整行(列)等增量赋值. 小数点 母目录 行命令延续符, 语句分割符,显示; 语句分割符,不显示= 赋值符 转置,引用 ! 操作系统命令 % 注释符= 关系相等符
20、 1, y1=y; y=y/2; end, y1求 MATLAB 中的最大实数。 X 不断增大,直到无法表示它的值,只能用 inf 表示为止。求 MATLAB 相对精度,y 不断减小,直至 MATLAB 分不出 1+y 与 1 的差别为止。(3) for 语句for k= 初值:增量:终值 语句组 A,end将语句组 A 反复执行 N 次,每次执行时程序中的 k 值不同。N=1+(终值 -初值) /增量for x=0: 0.1: pi/4 disp(x, sin(x), cos(x), tan(x), endn=input(n=), format ratfor i=1:n, for j=1:n
21、, h(i, j)=1/(i+j-1); end, end, h用 for 语句求三角函数表列出构成 Hilbert 矩阵的程序format rat, n=input(n=) for i=1:nfor j=1:n,h(i, j)=1/(i+j-1);endendhformat rat 显示形式是分数近似在 if,for ,while 与表达式之间留空格,在表达式与语句组之间必须用空格或逗号分隔,必须用逗号或分号分隔 end 和 else。break 是中止循环的命令,在多重循环中,break 只能使程序跳出包含它的最内部的那个循环。(4)switch 语句switch-case-otherwi
22、seswitch 表达式(标量或字符串)case 值 1语句组 ACase 值 2语句组 B.Otherwise语句组 Nend当表达式的值(或字符串)与某 case 语句中的值(或字符串)相同时,它就执行该 case 语句后的语句组,然后跳到终点的 end。case 语句可以有 N-1 个,如果没有任何一个 case 值能与表达式值相符,则执行 otherwise 后面的语句组 N。n=input( n=), switch mod(n,2), case 1, a=奇, case 0, a=偶, otherwise, a=空, endn=input( n=), switch rem(n,2),
23、 case 1, a=奇, case 0, a=偶, otherwise, a=空, end判断输入数 n 的奇、偶、空的程序n= 负数mod(x,m)x 整除 m 取正余数,rem (a,b) a 整除 b,求余数2.5 基本绘图方法1直角坐标中的两维曲线Iplot(y)- 输入一个数组的情况y=5*(rand(1,10) -.5)plot(y)title (my first plot)xlabel(x), ylabel(y)grid画出 10 个随机数的曲线。加标题,坐标轴说明加坐标网格线IIPlot(x,y)-输入两个数组的情况t=0:0.5:4*piy=exp(-0.1*t).*sin
24、(t)plot(t,y)y1=exp(-0.1*t).*sin(t+1)plot(t,y1,:)t 是横坐标,y 为纵坐标y1 相位超前 1 弧度。2线型、点型和颜色y2=exp(-0.1*x).*sin(x+1)plot(y2,*b)plot(y1,:y)plot(y2,+r)蓝色*号线黄色虚线红色+号线4多条曲线的绘制有四种方法在一张图上显示多条曲线I用 plot(t,y1,y2,)命令t=0:0.5:4*pi;y=exp(-0.1*t).*sin(t);y1=exp(-0.1*t).*sin(t+1);t 是向量,y 是矩阵,如果 t 是列(行)向量,则 y的列(行)长度与 t 相同。y
25、 的行(列)数就是曲线的根数。plot(t,y;y1) 这种方法要求所有的输出量有同样的长度和同样的自变量向量。不便于用户自行设定线型和颜色。II用 hold 命令plot(t,y), hold on ,plot(t,y1,g);t2=0:.2:2*pi; y2=exp(-0.5*t2).*sin(5*t2+1); plot(t2,y2);hold off画完一张图用命令保持住,再画下一条曲线。两张图的变量长度可以各不相同。只要每张图的自变量和因变量长度相同就可以。III在 plot 后使用多输入变量plot(x1,y1,x2,y2,.xn,yn)plot(t,y,+g,t2,y2,:r)ti
26、tle(线型,点型和颜色); xlabel( 时间),ylabel(Y)x1,y1,x2,y2,xn,yn 分别为数组对,每一对数组可以绘出一条曲线,每一组数组对的长度可以不同,在后面都可以加线型标志符。为曲线图加标题IV用 plotyy 命令y3=5*y2; plotyy(t,y,t2,y3);grid,gtext(t, t2);gtext(y),gtext(y3)Plotyy 设有两个纵坐标,可以绘制两个 y 尺度不同的变量,x 仍只用同一比例尺。用 gtext 命令可以标注纵坐标和曲线。5屏幕控制和其他二维绘图I 图形屏幕控制命令图形屏幕可以开、关,可以开几个图形窗,可以在一个图形窗内华
27、几幅分图,每幅分图可以用不同坐标。figureclfholdhold onhold offcloseclose allsubplot(n,m,p)打开图形窗口;清除当前图形窗的内容;保持当前图形窗的内容;再次用 hold 就解除保持状态。关闭当前图形窗口。关闭所有图形窗口。将图形窗口分为 n*m 个子图,在第 p 个子图处绘制图形。通用图形函数(graphics)(h)figure 创建图形窗口 shg 显示图形gcf 获取当前图形窗的句柄 refresh 刷新图形图形窗的控制 clf 清除当前图形窗 close 关闭图形窗axes 在任意位置创建坐标系 ishold 保持当前图形状态为真gc
28、a 获取当前坐标系的句柄 box 形成轴系方向轴系的控制 cla 清除当前坐标系line 创建直线 surface 创建曲面patch 创建图形填充块 light 创建照明图形对象image 创建图象set 设置对象特性 gcbo 获得回叫对象的曲柄get 获得对象特性 gcbf 获得回叫图形的曲柄reset 复位对象特性 drawnow 直接等待图形事件图形句柄操作delet 删除对象 findobj 寻找具有特定值的对象gco 获得当前对象的句柄 copyobj 为图形对象及其子项作硬拷贝closereq 请求关闭图形窗 ishandle 是图形句柄时为真工具newplot 说明 Next
29、plot 的 M 文件ginput 从鼠标作图形输入 uiputfile 给出存储文件的对话框graymon 设定图形窗灰度监视器 uigetfile 给出询问文件名的对话框rbbox 涂抹块 whitebg 设定图形窗背景色rotate 围绕指定方向旋转对象 zoom 二维图形的放大和缩小杂项terminal 设定图形终端类型 warndlg 警告对话框II其他二维绘图命令stemstairsbarerrorbarhistfill(t,y,颜色标注符)subplot (2,2,1), stem(t,y);title(stem(t,y)subplot (2,2,2), stairs(t,y);
30、title(stairs(t,y)subplot (2,2,3), bar(t,y);title(bar(t,y)subplot (2,2,4), fill(t,y,r);title( fill(t,y,r)subplot(1,1,1)loglogsemilogxsemilogypolar(theta,rho)绘脉冲图绘阶梯图绘条形图绘误差条形图绘直方图颜色标注符 r取消子图绘出以 log10-log10 为坐标刻度的对数图使用半对数刻度绘图,x 轴为 log10 刻度,y 轴为线性刻度。y 轴为 log10 刻度,x 轴为线性刻度。极坐标绘图,角度 theta 为一个坐标,单位是弧度,另一坐
31、标是矢径 rho。二维图形函数库plot 线性 X-Y 坐标绘图 polar 极坐标绘图loglog 双对数 X-Y 坐标绘图 plotyy 用左、右两种 Y 坐标画图基本X-Y图形 semilogx 半对数 X 坐标绘图 semilogy 半对数 Y 坐标绘图axis 控制坐标轴比例和外观 subplot 在平铺位置建立图形轴系坐标控制 hold 保持当前图形title 标出图名(适用于三维图形) gtext 用鼠标定位文字xlabel X 轴标注(适用于三维图形) legend 标注图例ylabel Y 轴标注(适用于三维图形) grid 图上加坐标网格(适用于三维)图形注释text 在图
32、上标文字(适用于三维)print 打印图形或把图存为 M 文件 orient 设定打印纸方向打印printopt 打印机默认选项III虚数的绘图figure(3)t=0:.2:4*piz=exp(-0.1+i)*t)subplot(2,2,1)plot(z)title(复数绘图 plot(z)subplot(2,2,2)plot(t,z)title(复数绘图 plot(t,z)subplot(2,2,3), polar(angle(z), abs(z)title(polar(angle(z),abs(z)subplot(2,2,4),semilogx(t,z)title(semilogx(t,
33、z)plot(t,real(z),imag(z)复数的实部为 x 坐标,虚部为 y 坐标进行绘图。绘多条曲线,必须用 hold 命令,或将多条曲线的实部和虚部明确地写出。Plot(real(z1),imag(z1),real(z2),imag(z2)plot(t,z)为双变量,z 的虚数部分将被丢弃。IV坐标比例和尺寸的设定axis 命令v=axisaxis(equal)axis(square)z=0:0.1:2*pi;x=sin(z);y=cos(z);subplot(1,2,1),plot(x,y)subplot(1,2,2), plot(x,y)axis(equal)用户自行设定坐标比例
34、,选择图形边界范围。返回值是图形边界的 4 元行向量,v=xmin, xmax, ymin,ymax图形是三维的,返回值是三维坐标边界的 6 元行向量。使屏幕上 x 与 y 的比例尺相同.2.5.5 三维曲线和曲面1 空间曲线绘制-plot3Plot3(x,y,z,s) 绘制空间曲线, s 是线型颜色符z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z,r)2.空间曲面的绘制mesh surf直线-连接相邻的点构成三维曲面 小平面-连接相邻的点构成三维曲面sinc(r)=sin(r)/rx=-8:0.5:8; y=x;r 是 X-Y 平面上的向径,绘制 sin
35、(r)/r 函数的立体图。X=ones(size(y)*x; Y=y*ones(size(x);R=sqrt(X.*X+Y.*Y); z=sin(R)./R;mesh(z),pauseR=sqrt(X.*X+Y.*Y)+eps; z=sin(R)./R;figure(2),mesh(z)R=abs(X)+abs(Y)+eps; z1=sin(R)./R;figure(3), surf(z1)X、Y 方向各有 33 个样本点,size 多维矩阵的各维长度。共建立 33*33=1089 个网格点的坐标矩阵 X和 Y,形成 33*33 网格的矩阵; R 表示数据点到原点的距离。在 R=0(原点)处出
36、现 0/0 运算,得 NaN 结果。eps 浮点数相对精度,消除 NaN。abs(X)+abs(Y)称为一范数,3.其他三维绘图命令view(20, 0)view(37,30)shading flatshading interpshading facetedrotate3dcontourcoutour3view(方位角, 俯仰角)可以变换立体图的视角默认值可将曲面上的小格平滑掉,使曲面成为光滑表面。默认状态,曲面有小格。可用鼠标拖动立体图作空间连续转动把曲面的等高线投影在 X-Y 平面在三维立体图中画出等高线subplot(2,2,1), R=sqrt(X.2+Y.*Y); z=sin(R).
37、/R; meshc(z), pause title( meshc(z),shading flat),shading flatSubplot(2,2,2), R=sqrt(X.2+Y.*Y)+eps; z=sin(R)./R; mesh(z),pausetitle(meshz(z),shading interp),shading interpsubplot(2,2,3), R=abs(X)+abs(Y)+eps; z1=sin(R)./R; surfc(z1),pausetitle(surfc(z1),shading flat),shading flat, %colormp(gray)subpl
38、ot(2,2,4), surfc(z1),view(20,0)title(surfc(z1), view(20,0)2.5.6 特殊图形和动画moviein getframe movie预留存储空间以加快运行的速度存储图形,每个图形成一个很大的列向量,再用 N行这样的列保存 N 幅图,成为一个大矩阵。用 movie 命令把它们连起来重放。 axis equal,m=moviein(16);for j=1:16plot(fft(eye(j+16);m(:,j)=getframe;endmovie(m,30)特殊图形和动画(graphics) (u)特殊 area 填满绘图区域 feather 羽
39、状图bar 条形图 fill 填满两维多边形barh 水平条形图 pareto pareto 图bar3 三维条形图 pie 饼图bar3h 三维水平条形图 plotmatrix 矩阵散布图compass 极坐标向量图 ribbon 画成三维中的色带comet 彗星轨迹图 stem 离散序列绘图的二维图形errorbar 误差条图 stairs 阶梯图contour 等高线图 pcolor 伪彩色图contourf 填充的等高线图 quiver 箭头图contour3 三维等高线图 voronoi voronoi 图等高线图形clabel 等高线图标出字符comet3 三维彗星轨迹图 slic
40、e 实体切片图meshc 三维曲面与等高线组合图 surfc 三维曲面与等高线组合图meshz 带帘的三维曲面 trisurf 三角表面图pie3 三维饼面 trimesh 三角网状表面图stem3 三维图 waterfall 瀑布图特殊三维图形quiver3 三维图image 显示图象 imread 从图形文件读出图像imagesc 缩放数据并作为图像显示 imwrite 把图像写入图形文件图像显示colormap 颜色查找表 imfinfo 关于图形文件的信息capture 从屏幕抓取图形文件 rotate 绕给定方向旋转对象moviein 初始化电影帧存储器 frame2im 把电影帧转
41、换为索引图象getframe 获取电影帧 im2frame 把索引图像转换为电影帧电影和动画movie 重放录下的电影帧实体 cylinder 生成圆柱体 sphere 生成球体2.5.7 彩色、光照和图像mesh(x,y,z,w)colorbarW 是颜色的值彩色条表示颜色与 w 值的一一对应关系x,y=meshgrid(-2:.2:2);z=x.*exp(-x.2-y.2);surf(x,y,z), colorbarfigure(2)surf (x,y,z,gradient(z), colorbar 彩色轴表示曲面的梯度,作为第四维坐标colormap(cool)m=colormappco
42、lor(1:65; 1:65)hot(8)pcolor(1:9;1:9)彩色条分为 64 个等级,颜色排序的默认值为HSV,用户可以自行定义为hot,cool,gray,copper,pink,jet,prism 等, m=colormap 将返回一个 643 阶的矩阵65 个分割点,产生 64 根彩条hot(8)将伪彩色板设置为 hot 色,改为 8 份。caxis(cmin cmax)surfl(peaks,30,0)人工设定的命令 caxis(cmin cmax)彩色条中的最小值、最大值光源在方位角 30 俯仰角 0 方向照射时的 peak 曲面。2.6 M 文件、 M 函数计程序调试M
43、 文件是文本文件,扩展名*.m 。(example.m)可以用任何编辑器来建立,可直接阅读。MATLAB 程序可直接调用 M 文件并执行。M 文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他 M 文件来调用,函数文件可以递归调用(自己调用自己) 。MATLAB 软件的大部分功能是来自其建立的函数集。1主程序文件主程序文件格式特征:(1) 用 clear 、close all 等语句开始,清除原有的变量和图形。注释行以%号开始,增加可读性。 MATLAB 不执行%号后面的任何内容。在键入“help 文件名example.m”时,屏幕会显示以%号起始的行的
44、内容,注释可以是汉字的。(2) 程序的主体全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。全局变量语句:global 变量名 1 变量名 2 程序必须用半角英文字母和符号编制(包括标点符号) ,只有%号后面的注释可以用中文。要注意流程控制语句的缩进及与 end 的对应关系。选项可以自动对程序进行缩进排版。(3) M 文件的文件名、路径名不能用中文,要按 MATLAB 的标识符编制,因为 M 文件也就是MATLAB 的调用命令。在 MATLAB 的命令窗键入程序的 M 文件名后,系统就开始执行 M 文件中的程序。例 1列出一个求 fibonnaci 数的程序,它是一个数列,从1
45、,1开始,由数列的最后两个元素之和生成新的元素,依次递推。%计算 fibonnaci 数的 M 文件clear,close allN=input(输入最大数值范围 N=)f=1,1; i=1; %变量的初始化while f(i)+f(i+1)50000)/2/pi; %求幅频特性大于 50kHz 的频带fhmin=min(fh),fhmax=max(fh),谐振频率 f0 = 1.5915e+005,空载品质因数 Q0 = 200,等效信号源内阻 Re = 4.0085e+004,考虑内阻后的品质因数 Q = 40.0853,通频带 B = 3.9704e+003,fhmin = 1.5770
46、e+005fhmax = 1.6063e+005例 5-19 阻抗匹配网络的计算为使信号源(其内阻 Rs=12)与负载(RL=3)相匹配,在其间插入一阻抗匹配网络,电路如图。已知 Z1=-j6,Z2=-j10,Z3=j6。若 Us=240,求负载吸收的功率。解:建模 方法 1 用 Z 方程求解,对于二端口电路有 即 21IzU0211IzU即 22对电源端有 即 1IRS SSI1对负载端有 即 22UL 02RUL将上四式写为矩阵形式 0012121SLSIRz其中 z11=Z1+Z2=-j16, z12=-j10, z22=Z2+Z3=-j4, z21=-j10Rs=12,RL=3,Us=
47、240解出 U2,则负载吸收功率为 LRUP2方法 2 应用戴维南定理求解。令 可得开路电压 ,当 时,负载端的输02I 02|IOCUS入阻抗即为等效阻抗 SzOUTeqRZ1按戴维南等效电路,得负载吸收功率 LOUTCP2%MATLAB 程序 5-19.mclear, format %调用画线路图函数Rs=12;RL=3;Z1=-6j; Z2=-10j; Z3=6j; Us=24;%方法 1 用 Z 方程求解Z(1,1)=Z1+Z2;Z(1,2)=-10j; %列出 Z 矩阵各分量Z(2,1)=Z(1,2); Z(2,2)=Z2+Z3;%系数矩阵 A 和系数矩阵 BA=1,0,-Z(1,1), -Z(1,2);0,1,-Z(2,1),-Z(2,2);1,0,Rs,0;0,1,0,RL;B=0;0;Us;0; X=AB %求方程解U1=X(1); U2=X(2);I1=X(3);I2=X(4); %列出各未知数的解