MATLAB编程入门

上传人:文*** 文档编号:28549656 上传时间:2021-08-30 格式:PPT 页数:129 大小:1.97MB
收藏 版权申诉 举报 下载
MATLAB编程入门_第1页
第1页 / 共129页
MATLAB编程入门_第2页
第2页 / 共129页
MATLAB编程入门_第3页
第3页 / 共129页
资源描述:

《MATLAB编程入门》由会员分享,可在线阅读,更多相关《MATLAB编程入门(129页珍藏版)》请在装配图网上搜索。

1、MATLAB编程入门 目 录第1章 MATLAB简介第2章 MATLAB基本语法2.1 变量及其赋值2.2 矩阵的初等运算2.3 元素群运算2.4 逻辑判断及流程控制2.5 基本绘图方法2.6 M文件及程序调试第3章 MATLAB在电路中的应用3.1 电阻电路3.2 动态电路3.3 正弦稳态电路3.4 频率响应 3.5 二端口电路 第一章 MATLAB简介 MATLAB(MATrix LABoratory,即矩阵实验室)是MathWork公司推出的一套高效率的数值计算和可视化软件。 MATLAB是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。

2、 它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。 MATLAB语言有如下优点: 1.编程简单使用方便 MATLAB的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。 MATLAB的矩阵和向量操作功能是其他语言无法比拟的。 2.函数库可任意扩充 由于MATLAB语言库函数与用户文件的形式相同,所以用户文件可以像库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。 3.语言简单内涵丰富 MATLAB语言中最重要的成分是

3、函数,其一般形式为: Function a,b,c=fun(d,e,f) fun是自定义的函数名,只要不与库函数名相重,并且符合字符串的书写规则即可。这里的函数既可以是数学上的函数,也可以是程序块或子程序,内涵十分丰富。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。 4.简便的绘图功能 MATLAB具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要在坐标图上加标题。坐标轴标记。文本注释及栅格等,也可一指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。 5.丰富的工具箱 由于M

4、ATLAB的开放性,许多领域的专家都为MATLAB编写了各种程序工具箱。 这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。 第二章 MATLAB基本语法2.1 变量及其赋值(1)标识符与数 标识符是标识变量名、常量名、函数名和文件名的字符串的总称。标识符可以是英文字母、数字和下划线等符号。标识符第1个字符必须是英文字母,MATLAB对大、小写敏感。 MATLAB只有一种数据格式,双精度(即64位)二进制,对应于十进制16位有效数和308次幂。 (2)矩阵及其元素的赋值变量=表达式(数)a=1 2 3; 4 5 6;

5、7 8 9x=-1.3 sqrt(3) (1+2+3)/5*4x(5)=abs(x(1)a(4,3)=6.5a = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。 元素用()中的数字(下标)来注明,一维用一个下标,二维用两个下标,逗号分开。 a(5,:)=5,4,3b=a(2,4,1,3)a(2,4,5, : )= a/7 如果赋值元素的下标超过原来矩阵的大小,矩阵的行列会自动扩展。 全行赋

6、值,用冒号。 提取交点元素; 抽取某行元素用空矩阵。 (3)复数c=3+5.2iz=1+2i,3+4i; 5+6i,7+8iz=1,3; 5,7+2,4; 6,8*if=sqrt(1+2i)f*f 复数的虚数部分用i或j表示,如曾用过i, j 作变量,用clear i,j 复数矩阵有两种赋值方法: 将其元素逐个赋予复数; 将其实部和虚部矩阵分别赋值。w=z (共轭转置)u=conj(z) (共轭)v=conj(z) (转置) Z复数矩阵共轭转置:行列互换,各元素的虚部反号。 函数conj(z)共轭:只把各元素的虚部反号。 转置conj(z):行列互换。 z = 1.0000 + 2.0000i

7、 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000iw=z(共轭转置)w = 1.0000 - 2.0000i 5.0000 - 6.0000i 3.0000 - 4.0000i 7.0000 - 8.0000iu=conj(z) (共轭)u = 1.0000 - 2.0000i 3.0000 - 4.0000i 5.0000 - 6.0000i 7.0000 - 8.0000iv=conj(z) (转置)v = 1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000

8、i (4)变量检查whowhosinfNaN 检查工作空间中的变量; 检查变量的详细特征 无穷大 1/0; 非数(Not a Number) 0/0 inf/inf 0*inf。 系统不停止运算,结果仍为inf或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的自然数组成,每行、每列及两对角线上的元素之和均等于(n3+n)/2。 单位矩阵是nn阶的方阵。对角线上元素为1。 线性分割函数 大矩阵可

9、由小矩阵组成,其行列数必须正确,恰好填满全部元素。 f1 = 1 1 1 1 1 1 全1矩阵f3 = 8 1 6 魔方矩阵 3 5 7 4 9 2线性分割函数f5 = 0 0.2500 0.5000 0.7500 1.0000大矩阵可由小矩阵组成fb2 =1.0000 1.0000 8.0000 1.0000 6.0000 1.0000 1.0000 3.0000 5.0000 7.0000 1.0000 1.0000 4.0000 9.0000 2.0000 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0.2500 0.5000 0.7500 1.0000 f2 = 0

10、 0 0 全0矩阵 0 0 0f4 = 1 0 单位矩阵 0 1fb1 = 1 1 8 1 6 1 1 3 5 7 1 1 4 9 2 1 0 0 0 0 0 1 0 0 0fb1=f1,f3;f4,f2 fb2=fb1;f5 2.2 矩阵的初等运算(1)矩阵的加减乘法i. 加、减法:相加减的两矩阵阶数必须相同,对应元素相加减。n,m=size(fb2)x=-1 0 1; y=x-1y = -2 -1 0 语句size检查矩阵阶数,两矩阵相加,阶数必须相同。 两相加减的矩阵中有一个是标量时,MATLAB将标量扩展成同等元素矩阵,与另一矩阵相加减。 pi*x 标量与矩阵相乘,不检查阶数,标量乘以

11、矩阵的每一个元素。x=-1 0 1; X与y内阶数不同,将y转置 y。读作x左乘y。y =-2 -1 0;x*y ans = 2 ans = 2 0 -2y*x X右乘y。 1 0 -1 0 0 0eye(3)*a 左、右乘结果不同,只有单位矩阵例外。a*eye(3) 单位矩阵乘以矩阵A,左、右乘结果仍等于该矩阵。a = 1 2 3 ans = 1 2 3 ans = 1 2 3 4 5 6 4 5 6 4 5 6 7 8 9 7 8 9 7 8 9ii.矩阵乘法矩阵A np阶与矩阵B pm阶的乘积 C是nm阶矩阵。P是A阵的列数,B阵的行数,称为两个相乘矩阵的内阶数。两矩阵相乘的必要条件是内

12、阶数相等。C(i,j)=kA(i,k)B(k,j)值为A阵第i行和B阵第j列对应元素乘积的和。 (2)矩阵的除法及线性方程组的解a =1 2 3 4 5 6 7 8 9AV=I V=A-1V=inv(a) inv(a)*aV = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 nn阶方阵A和同阶的方阵V相乘,得出n阶单位矩阵I。 I为eye(n)。 V是A的逆阵。V存在条件:A的行列式不等于0,det(A)0 V=A-1 MATLAB内部函数inv,得出A的逆阵V。D*X=B inv(

13、D)*D*X=inv(D)*B inv(D)*D=I I*X=XX=inv(D)*B=DB X*D=B X=B*inv(D)=B/D D与B行数相等 两端同时左乘以inv(D) 逆阵 单位阵 DB为D左除BX=DB,左除时阶数检查条件:两矩阵的行数必须相等。 未知矩阵在左. D的逆阵右乘以B,记作 /D 右除。 右除时阶数检查条件:两矩阵的列数必须相等。 a=1 2 3; 3 -5 4; 7 8 9x=x1,x2,x3b=2;0;2ax=b x=ab a左除b方程组 X1+2X2+3X3=2 3X1- 5X2+4X3=0 7X1+8X2+9X3=2可以表示为ax=b a=1 2 3;4 5 6

14、b=2 4 0; 1 3 5d=1 4 7; 8 5 2; 3 6 0运算:a*b daa*b? Error using = *Inner matrix dimensions must agree.da? Error using = Matrix dimensions must agree. a*b ans = 6 16 20 9 23 25 12 30 30a*b ans = 10 22 28 49da ans = -0.0370 0 0.5185 1.0000 -0.1481 0a/d ans = 0.4074 0.0741 0.0000 0.7407 0.4074 0.0000 解线性方

15、程组Ax=B 6x1+3x2+4x3=3 -2 x1+5 x2+7 x3=-48 x1-4 x2-3 x3=-7 A=6 3 4; -2 5 7; 8 -4 -3B=3;-4; -7X=AB A = 6 3 4 -2 5 7 8 -4 -3B = 3 -4 -7X = 0.6000 7.0000 -5.4000 (3)矩阵的乘方和幂次函数 MATLAB的运算符*、/、和,指数函数expm、对数函数logm和开方函数sqrtm是对矩阵进行的,即把矩阵作为一个整体来运算。除此以外,其他MATLAB函数都是对矩阵中的元素分别进行,英文直译为数组运算(Array Operations),译为“元素群运

16、算”S=1 2; 3 4D=1 4 7; 8 5 2; 3 6 0D22.DDS 幂次运算:矩阵为底数,指数是标量,同矩阵乘法一样,为保内阶数相同,底数的矩阵必须是方阵。矩阵是指数,底数是标量,矩阵也必须是方阵。底数和指数不能同时为矩阵。 按矩阵运算,等于D* D 按元素群运算 非法运算U1=sqrtm(S)U2=sqrt(S) V1=expm(S)V2=exp(S)Logm(D)Log(D) 按矩阵运算,求平方根,可以用U1* U1=S验证 按元素群运算,U2* U2S,U2.U2=S 按矩阵运算 按元素群运算 按矩阵运算 按元素群运算 S =1 2 3 4D = 1 4 7 8 5 2 3

17、 6 0D2 ans = 54 66 15 54 69 66 51 42 33 2.D ans = 2 16 128 256 32 4 8 64 1 DS? Error using = At least one operand must be scalar.V1=expm(S)V1 = 51.9690 74.7366 112.1048 164.0738V2=exp(S)V2 = 2.7183 7.3891 20.0855 54.5982U1=sqrtm(S) U1 =0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.14

18、58iU2=sqrt(S)U2 = 1.0000 1.4142 1.7321 2.0000 Logm(D)ans = 1.2447 -0.9170 2.8255 1.6044 2.5760 -1.9132 -0.7539 1.1372 1.6724log(D)Warning: Log of zero.ans = 0 1.3863 1.9459 2.0794 1.6094 0.6931 1.0986 1.7918 -Inf (4)矩阵结构形式的提取与变换A=8 1 6 0; 3 5 7 1; 4 9 2 2B1=fliplr(A)B2=flipud(A)B3=reshape(A,2,6) 提取矩

19、阵中某些特殊结构的元素, 组成新的矩阵,改变矩阵结构。 fliplr矩阵左右翻转 flipud矩阵上下翻转 reshape阶数重组(元素总数不变)B4=rot90(A)B5=diag(A)B6=tril(A)B7=triu(A)B8=A(: ) rot90矩阵整体反时针旋转90度 diag提取或建立对角阵 tril取矩阵的左下三角部分 triu取矩阵的右上三角部分 将元素按列取出排成一列 A = 8 1 6 0 3 5 7 1 4 9 2 2B1=fliplr(A)B1 = 0 6 1 8 1 7 5 3 2 2 9 4B2=flipud(A)B2 = 4 9 2 2 3 5 7 1 8 1

20、6 0B3=reshape(A,2,6)B3 = 8 4 5 6 2 1 3 1 9 7 0 2 B4=rot90(A)B4 = 0 1 2 6 7 2 1 5 9 8 3 4B5=diag(A)B5 = 8 5 2B6=tril(A)B6 = 8 0 0 0 3 5 0 0 4 9 2 0B7=triu(A) B7 = 8 1 6 0 0 5 7 1 0 0 2 2B8=A(: ) B8 =8 3 4 1 5 9 6 7 2 0 1 2 2.3 元素群运算(1)数组及其赋值数组是单行或单列的矩阵,一个N阶的数组可以表述为一个N组向量。t=0 : 0.02 : 1z=10 : -3: -5k=

21、1 : 6用两个冒号组成等增量语句格式:t=初值:增量:终值增量也可以设为负值,此时初值要比终值大增量为1时,增量值可以省略。t = 0 0.0200 0.0400 0.0600 0.0800 0.1000 0.1200 0.1400 0.1600 0.1800 0.2000 0.2200 0.2400 0.2600 0.2800 0.3000 0.3200 0.3400 0.3600 0.3800 0.4000 0.4200 0.4400 0.4600 0.4800 0.5000 0.5200 0.5400 0.5600 0.5800 0.6000 0.6200 0.6400 0.6600

22、0.6800 0.7000 0.7200 0.7400 0.7600 0.7800 0.8000 0.8200 0.8400 0.8600 0.8800 0.9000 0.9200 0.9400 0.9600 0.9800 1.0000z = 10 7 4 1 -2 -5 k = 1 2 3 4 5 6 theta = 0 0.7854 1.5708 2.3562 3.1416 3.9270 4.7124 5.4978 6.2832theta= linspace (0, 2*pi, 9)w=logspace (0, 1, 11) 用linspace函数 格式:linspace(初值、终值、点数

23、)logspace函数,自变量按等比级数赋值。从10的0次幂到1次幂之间按幂等分为11点(数是等比的) w = 1.0000 1.2589 1.5849 1.9953 2.5119 3.1623 3.9811 5.0119 6.3096 7.9433 10.0000 (2)元素群的四则运算和幂次运算 元素群的运算是矩阵中所有元素按单个元素运算。运算符前加.号,表示元素群运算。 元素群的运算的两个矩阵必须是同阶的。(标量会自动扩展为同阶矩阵参与运算)x=1, 2, 3y=4, 5, 6z=x.*yz=x.yz=x.yz=x.2z=2.x y z =4 10 18 x*y不能成立z =4.0 2.

24、5 2.0 元素群没有左除右除之分z =1 32 729 xy 能成立吗?z =1 4 9 x2能成立吗?z =2 4 8 16 32 64 2x y 能成立吗?d=1 4 7; 8 5 2; 3 6 0d3 d.33.d3d 元素群的幂次运算是各个元素自行作幂次运算,对每个元素的这种运算和对标量运算一样。但是,不能将元素群运算称为数组运算。 区别左边运算 输入算式 d d3 d.3输出结果 1 4 7 8 5 2 3 6 0 627 636 510 804 957 516 486 612 441 1 64 343 512 125 8 27 216 0输入算式 3.d 3d输出结果 3 81

25、2187 6561 243 9 27 729 1 1.0e+005 * 2.6388 - 0.0000i 3.0233 + 0.0000i 1.9754 + 0.0000i 3.4735 - 0.0000i 3.9797 + 0.0000i 2.6003 + 0.0000i 2.3170 - 0.0000i 2.6546 + 0.0000i 1.7345 + 0.0000i (3)元素群的函数 除矩阵运算的乘、右除、左除、幂指数( / )、sqrtm、expm、logm函数外,基本函数库中的常用函数都可用于元素群运算。自变量可以是任意阶的矩阵。 基本函数库(elfun) x=0: 0.1: p

26、i/4x = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000disp(显示 x sin(x) cos(x) tan(x)disp(x, sin(x) cos(x) tan(x) 显示 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.600

27、0 0.5646 0.8253 0.6841 0.7000 0.6442 0.7648 0.8423 2.4 逻辑判断及流程控制 1. 关系运算a= 2+2=4a=(2+2=4)a=(34)a=(43)a=(3=4)a=(43)a=(34)等于,a = 1a = 1小于,a = 1 a = 0小于等于,a = 1a = 0大于,a =1a =0a=(4=3)a=(3=4)a=(3=4) A=magic(6)rem(A,3)p=(rem(A, 3)=0)lp=find (p) 大于等于,a=1a=0不等于,a=1魔方矩阵,每行、每列、对角线的元素之和=(n3+n)/2A整除3,求余数余数为0,是

28、真,即整除找出p矩阵中不为零元素的序号,矩阵元素是按列排序号的。 A=magic(6)A =35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 rem(A,3)ans = 2 1 0 2 1 0 0 2 1 0 2 1 1 0 2 1 0 2 2 1 0 2 1 0 0 2 1 0 2 1 1 0 2 1 0 2p=(rem(A, 3)=0)p =0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0

29、0 1 0 0 0 1 0 0 1 0 lp=find (p) lp=2 5 9 12 13 16 20 23 27 30 31 34 矩阵元素的序号排法: 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 符号意义符号意义符号意义+加-减*矩阵乘矩阵左除/矩阵右除矩阵乘幂.*矩阵元素乘./矩阵元素除.矩阵元素乘幂( )优先,下标输入参量矩阵,向量输入变量:整行(列)等增量赋值.小数点.母目录行命令

30、延续符,语句分割符,显示;语句分割符,不显示=赋值符转置,引用!操作系统命令%注释符 =关系相等符关系大小符=关系不等符 n = 8 a =even n = a =odd n=input( n=), if isempty(n)=1 a=empty, elseif rem(n,2)=0 a=even, else a=odd, end n = a =empty 输入数n,判断奇偶性。如果用户没有键入数就回车,程序会判断为odd。 修改为用户无输入时程序自动中止。 (2)while语句while (表达式) 语句组A,endx=1; while x=inf, x1=x; x=2*x; end, x1

31、x1 = 8.9885e+307求MATLAB中的最大实数。X不断增大,直到无法表示它的值,只能用inf表示为止。y=1; while 1+y1, y1=y y=y/2; end, y1 y1 =2.2204e-016求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与1的差别为止。 x=1; while x=inf, x1=x; x=1.1*x; end, x1x1 =1.7837e+308 (3) for语句for k= 初值:增量:终值 语句组A,end将语句组A反复执行N次,每次执行时程序中的k值不同。N=1+(终值-初值)/增量用for语句求三角函数表for x=0:

32、0.1: pi/4 disp(x, sin(x), cos(x), tan(x), end运行结果 x sin(x) cos(x) tan(x) 0 0 1 0 1/10 839/8404 1195/1201 1499/14940 1/5 209/1052 295/301 374/1845 3/10 409/1384 1647/1724 275/889 2/5 368/945 2882/3129 1777/4203 1/2 501/1045 1699/1936 820/1501 3/5 1153/2042 430/521 979/1431 7/10 947/1470 992/1297 486/

33、577 列出构成Hilbert矩阵的程序 format rat显示形式是分数近似 n=input(n=), format rat for i=1:n, for j=1:n, h(i, j)=1/(i+j-1); end, end, h n =5h = 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9 增加可读性format rat, n=input(n=) for i=1:n for j=1:n, h(i, j)=1/(i+j-1); endendh

34、 在if,for,while与表达式之间留空格,在表达式与语句组之间必须用空格或逗号分隔,必须用逗号或分号分隔end和else。 break 是中止循环的命令,在多重循环中,break只能使程序跳出包含它的最内部的那个循环。 (4)switch语句switch-case-otherwiseswitch 表达式(标量或字符串)case 值1语句组ACase 值2语句组B.Otherwise语句组Nend 当表达式的值(或字符串)与某case语句中的值(或字符串)相同时,它就执行该case语句后的语句组,然后跳到终点的end。 case语句可以有N-1个,如果没有任何一个case值能与表达式值相符

35、,则执行otherwise后面的语句组N。 n=input( n=), switch mod(n,2), case 1, a=奇, case 0, a=偶, otherwise, a=空, endn = 5 a =奇n=input( n=), switch rem(n,2), case 1, a=奇, case 0, a=偶, otherwise, a=空, end n = 8 a =偶判断输入数n的奇、偶、空的程序mod(x,m)x整除m取正余数,rem(a,b) a整除b,求余数n= 负数 n = -5 a =奇n=-8a =偶 2.5 基本绘图方法1直角坐标中的两维曲线(1)plot(y

36、)-输入一个数组的情况y=5*(rand(1,10) -.5)plot(y)title (my first plot)xlabel(x), ylabel(y)grid 画出10个随机数的曲线。Rand函数产生01之间的随机数,平均值是0.5。加标题,坐标轴说明加坐标网格线 t=0:0.5:4*piy=exp(-0.1*t).*sin(t)plot(t,y) y1=exp(-0.1*t).*sin(t+1)plot(t,y1,:) t是横坐标,y为纵坐标y1相位超前1弧度。 (2)Plot(x,y)-输入两个数组的情况 2线型、点型和颜色y2=exp(-0.1*t).*sin(t+1)plot(

37、y2,*b)plot(y1,:y)plot(y2,+r) 蓝色*号线黄色虚线红色+号线 t=0:0.5:4*pi;y=exp(-0.1*t).*sin(t);y1=exp(-0.1*t).*sin(t+1);plot(t,y;y1) t是向量,y是矩阵,如果t是列(行)向量,则y的列(行)长度与t相同。y的行(列)数就是曲线的根数。这种方法要求所有的输出量有同样的长度和同样 的自变量向量。不便于用户自行设定线型和颜色。 3多条曲线的绘制有四种方法在一张图上显示多条曲线(1)用plot(t,y1,y2,)命令 (2)用hold命令plot(x1,y1,x2,y2,.xn,yn)plot(t,y,

38、+g,t2,y2,:r);title(线型,点型和颜色); xlabel(时间),ylabel(Y) x1,y1,x2,y2,xn,yn分别为数组对,每一对数组可以绘出一条曲线,每一组数组对的长度可以不同,在后面都可以加线型标志符。 为曲线图加标题 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 画完一张图用命令保持住,再画下一条曲线。两张图的变量长度可以各不相同。只要每张图的自变量和因变量长度相同就可以。 (3)在plot后使用多输入变量 (2)图

39、用hold命令(3)图在plot后使用多输入变量 (4)用plotyy命令 y3=5*y2; plotyy(t,y,t2,y3);grid, gtext(t, t2);gtext(y),gtext(y3) Plotyy设有两个纵坐标,可以绘制两个y尺度不同的变量,x仍只用同一比例尺。用gtext命令可以标注纵坐标和曲线。 4. 屏幕控制和其他二维绘图(1)图形屏幕控制命令图形屏幕可以开、关,可以开几个图形窗,可以在一个图形窗内华几幅分图,每幅分图可以用不同坐标。figureclfholdhold onhold offcloseclose allsubplot(n,m,p)打开图形窗口;清除当前

40、图形窗的内容;保持当前图形窗的内容;再次用hold就解除保持状态。关闭当前图形窗口。关闭所有图形窗口。将图形窗口分为n*m个子图,在第p个子图处绘制图形。 figure创建图形窗口shg显示图形图形窗的控制 gcf获取当前图形窗的句柄refresh刷新图形clf清除当前图形窗close关闭图形窗axes在任意位置创建坐标系ishold保持当前图形状态为真轴系的控制gca获取当前坐标系的句柄box形成轴系方向cla清除当前坐标系 line创建直线surface创建曲面图形对象 patch创建图形填充块light创建照明image创建图象 通用图形函数(graphics)(h) set设置对象特性

41、gcbo获得回叫对象的曲柄图形get获得对象特性gcbf获得回叫图形的曲柄句柄reset复位对象特性drawnow直接等待图形事件操作delet删除对象findobj寻找具有特定值的对象gco获得当前对象的句柄copyobj为图形对象及其子项作硬拷贝工具 closereq请求关闭图形窗ishandle是图形句柄时为真newplot说明Nextplot的M文件ginput从鼠标作图形输入uiputfile给出存储文件的对话框杂项 graymon设定图形窗灰度监视器uigetfile给出询问文件名的对话框rbbox涂抹块whitebg设定图形窗背景色rotate 围绕指定方向旋转对象zoom二维图

42、形的放大和缩小terminal设定图形终端类型warndlg警告对话框 (2)其他二维绘图命令stemstairsbarerrorbarhistfill(t,y,颜色标注符)绘脉冲图绘阶梯图绘条形图绘误差条形图绘直方图颜色标注符 rsubplot (2,2,1), stem(t,y);title(stem(t,y)subplot (2,2,2), stairs(t,y);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(

43、1,1,1)loglogsemilogxsemilogypolar(theta,rho) 取消子图绘出以log10-log10为坐标刻度的对数图使用半对数刻度绘图,x轴为log10刻度,y轴为线性刻度。使用半对数刻度绘图, y轴为log10刻度,x轴为线性刻度。极坐标绘图,角度theta为一个坐标,单位是弧度,另一坐标是矢径rho。 二维图形函数库基本plot线性X-Y坐标绘图polar极坐标绘图X-Y loglog双对数X-Y坐标绘图plotyy用左、右两种Y坐标画图图形semilogx半对数X坐标绘图semilogy半对数Y坐标绘图坐标axis控制坐标轴比例和外观subplot在平铺位置建

44、立图形轴系控制 hold保持当前图形图title标出图名(适用于三维图形)gtext用鼠标定位文字形xlabel X轴标注(适用于三维图形)legend标注图例注ylabel Y轴标注(适用于三维图形)grid图上加坐标网格(适用于三维)释textt在图上标文字(适用于三维)打print打印图形或把图存为M文件orient设定打印纸方向印printop打印机默认选项 (3)虚数的绘图figure(2)t=0:.2:4*piz=exp(-0.1+i)*t)subplot(2,2,1)plot(z), pausetitle(复数绘图plot(z)subplot(2,2,2)plot(t,z), p

45、ausetitle(复数绘图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,z)plot(t,real(z),imag(z) plot(z)中的z为复数单变量时(即含有非零的虚部),复数的实部为x坐标,虚部为y坐标进行绘图。即相当于plot(real(z),imag(z)。如果是双变量,如plot(t,z) ,则z中的虚数部分将被丢弃。要在复平面内绘多条曲线,必须用hold命令,或将多条曲线的实部和虚部明

46、确地写出,作为函数的输入变元,即Plot(real(z1),imag(z1),real(z2),imag(z2)子图1画出了复数图形;子图2只画出了z的实部随t 的变化规律,子图3是用极坐标绘制的复数曲线;子图4说明了半对数坐标绘图的结果。 (4)坐标比例和尺寸的设定axis命令v=axisaxis(v)axis(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) 用户自行设定坐标比例,选择图形边界范围。返回值是图形边界的4元

47、行向量,v=xmin, xmax, ymin,ymax如果当前图形是三维的,返回值是三维坐标边界的6元行向量。将坐标轴设定在v规定的范围内。0控制图形的纵横比,使屏幕上x与y的比例尺相同. axis(equal)的作用使第二个字图称为圆。 v=axisaxis(equal)axis(square)v = 0 1 0 1 5. 三维曲线和曲面(1)空间曲线绘制-plot3plot3(x,y,z,s) z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z,r) 绘制空间曲线, s是线型颜色符 (2)空间曲面的绘制mesh surf 直线-连接相邻的点构成三维曲面 小

48、平面-连接相邻的点构成三维曲面 函数sinc(r)=sin(r)/rx=-8:0.5:8; y=x; X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.*X+Y.*Y); z=sin(R)./R;mesh(z),pause r是X-Y平面上的向径,绘制sin(r)/r函数的立体图。 X、Y方向各有33个样本点,生成一维自变量数组。 size多维矩阵的各维长度。共建立33*33=1089 个网格点的坐标矩阵X和Y,形成33*33网格的矩阵; R表示数据点到原点的距离,生成因变量。 画三维曲面R=sqrt(X.*X+Y.*Y)+eps; z=sin(R)./R;

49、figure(2),mesh(z)R=abs(X)+abs(Y)+eps; z1=sin(R)./R;figure(3), surf(z1) 在R=0(原点)处出现0/0运算,得NaN结果。eps浮点数相对精度,消除NaN。abs(X)+abs(Y)称为一范数 1图是mesh图, 原点处出现0/0运算,得NaN结果 2图是mesh图, eps浮点数相对精度,消除NaN 3图 是surf 图,abs(X)+abs(Y)称为一范数 (3)其他三维绘图命令view(20, 0)view(37,30) view(方位角, 俯仰角)可以变换立体图的视角默认值shading flatshading int

50、erpshading faceted可将曲面上的小格平滑掉,使曲面成为光滑表面。默认状态,曲面有小格。rotate3dcontourcoutour3 可用鼠标拖动立体图作空间连续转动把曲面的等高线投影在X-Y平面在三维立体图中画出等高线 subplot(2,2,1), R=sqrt(X.2+Y.*Y); z=sin(R)./R; meshc(z), pause title( meshc(z),shading flat),shading flat Subplot(2,2,2), R=sqrt(X.2+Y.*Y)+eps; z=sin(R)./R; mesh(z),pausetitle(meshz

51、(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) subplot(2,2,4), surfc(z1),view(20,0); rotate3dtitle(surfc(z1), view(20,0) meshc(z) 、surfc(z1),加入了等高线绘制命令contour3。 6. 特殊图形和动画moviein getframe

52、movie 预留存储空间以加快运行的速度存储图形,每个图形成一个很大的列向量,再用N行这样的列保存N幅图,成为一个大矩阵。用movie命令把它们连起来重放。 axis equal,m=moviein(16); for j=1:16 plot(fft(eye(j+16); m(:,j)=getframe; endmovie(m,30) eye单位矩阵%因为产生的图形是圆形,将坐标设成相等比例%为变量M预留16幅图的存储空间%做16次循环%画图%依次存入M中16个画面放在矩阵M中,每幅16858*8=134864个字节,运行movie(m,30),将M中图形播放30遍。 fft Discrete

53、Fourier transform. 特殊图形和动画(graphics)(u)area填满绘图区域feather羽状图特bar条形图fill填满两维多边形殊barh水平条形图pareto pareto图的bar3三维条形图pie饼图二bar3h三维水平条形图plotmatrix矩阵散布图维compass极坐标向量图ribbon画成三维中的色带图comet彗星轨迹图stem离散序列绘图形errorbar误差条图stairs阶梯图等高contour等高线图pcolor伪彩色图 线contourf填充的等高线图quiver箭头图图contour3三维等高线图voronoi voronoi图形clab

54、el等高线图标出字符 comet3三维彗星轨迹图slice实体切片图特殊meshc三维曲面与等高线组合图surfc三维曲面与等高线组合图meshz带帘的三维曲面trisurf三角表面图三维pie3三维饼面trimesh三角网状表面图stem3三维图waterfall瀑布图图形quiver3三维图image显示图象imread从图形文件读出图像图像imagesc缩放数据并作为图像显示imwrite把图像写入图形文件显示colormap颜色查找表imfinfo关于图形文件的信息电影capture从屏幕抓取图形文件rotate绕给定方向旋转对象和moviein初始化电影帧存储器frame2im把电影

55、帧转换为索引图象动画getframe获取电影帧im2frame把索引图像转换为电影帧 movie重放录下的电影帧实体 cylinder 生成圆柱体sphere生成球体 7. 彩色、光照和图像mesh(x,y,z,w)colorbar 在三维曲面绘图命令中加入第四维变元,W是颜色的值。彩色条表示颜色与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

56、=colormappcolor(1:65; 1:65)hot(8)pcolor(1:9;1:9)caxis(cmin cmax)surfl(peaks,30,0) 彩色条分为64个等级,颜色排序的默认值为HSV,用户可以自行定义为hot,cool,gray,copper,pink,jet,prism等, m=colormap将返回一个643阶的矩阵65个分割点,产生64根彩条hot(8)将伪彩色板设置为hot色,改为8份。人工设定的命令caxis(cmin cmax)彩色条中的最小值、最大值光源在方位角30俯仰角0方向照射时的peak曲面。 2.6 M文件、M函数及程序调试 M文件是文本文件,

57、扩展名*.m。(example.m)可以用任何编辑器来建立,可直接阅读。MATLAB程序可直接调用M文件并执行。 M文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他M文件来调用,函数文件可以递归调用(自己调用自己)。MATLAB软件的大部分功能是来自其建立的函数集。 1主程序文件主程序文件格式特征:(1)用clear 、close all等语句开始,清除原有的变量和图形。注释行以%号开始,增加可读性。MATLAB不执行%号后面的任何内容。在键入“help 文件名example.m”时,屏幕会显示以%号起始的行的内容,注释可以是汉字的。 (2)程序的主体

58、全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。全局变量语句:global 变量名1 变量名2 程序必须用半角英文字母和符号编制(包括标点符号),只有%号后面的注释可以用中文。要注意流程控制语句的缩进及与end的对应关系。选项可以自动对程序进行缩进排版。元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。 (3)M文件的文件名、路径名不能用中文,要按MATLAB的标识符编制,因为M文件也就是MATLAB的调用命令。在MATLAB的命令窗键入程序的M文件名后,系统就开始执行M文件中的程序。 例1列出一个求fibonnaci数的

59、程序,它是一个数列,从1,1开始,由数列的最后两个元素之和生成新的元素,依次递推。%计算fibonnaci数的M文件clear,close allN=input(输入最大数值范围 N=) f=1,1; i=1; %变量的初始化while f(i)+f(i+1)N %循环条件检验f(i+2)=f(i+1)+f(i); i=i+1; %求fibonnaci数的算式endf,plot(f) %显示和绘图输入最大数值范围 N=20N = 20f = 1 1 2 3 5 8 13将程序以文件名fibon.m存入一MATLAB搜索目录下,在MATLAB命令窗中键入fibon,即可执行。 例2求素数的程序。

60、只能被自身和1除净的数。%求素数(prime number)的程序clear, close allN=input(N=), x=2:N;for u=2:sqrt(N) n=find (rem(x, u)=0 x(n)= ;end, x N = 44x =2 3 5 7 11 13 17 19 23 29 31 37 41 43 人机交互命令:echo on(off) 在执行M文件每行程序前先显示其内容。pause(n) 程序执行到此,暂停n秒,再继续。keyboard程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作,键入字符串return,恢复运行原来的程序。input(提示

61、符) 程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。c (control-c) 强行停止程序运行的命令。menu 用来产生人际交互的备选择菜单的命令。 2函数文件 函数文件是用来定义子程序的。与主程序文件的主要区别有3点:(1)由function起头,后面跟的函数名,函数名必须与文件名相同。(2)有输入输出变元(变量),可以进行变量传递。(3)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。例3函数文件mean.m function y=mean(x) %文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和

62、函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。%MEAN求平均值。对于向量, mean(x)返回该向量x中各元素的平均值% 对于矩阵,mean(x)是一个包含各列元素平均值的行向量m, n=size (x); % 变量m,n和y都是函数mean的局部变量,当mean文件执行完毕,这些变量值会自动消失,不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者看作各自无关的变量。如果希望将两者看作同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。 If m=1 M=n; end %处理单行向量y=sum(x)/m z=magi

63、c(7)mean(z) %对输入变元x赋值,应把x代换成主程序中的已知变量。假如它是一个已知向量或矩阵Z,可以写成mean(Z),该变量Z通过变元替换传递给mean函数后,在子程序内,它就变成了局部变量x。z = 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20ans =25 25 25 25 25 25 25 例4 多输入变量函数logspace,用于生成等比分割的数组

64、。function y=logspace (d1, d2, n)% LOGSPACE 对数均分数组% LOGSPACE(d1, d2)在10d1与10d2之间生成长度为50的对数均分数组% 如果d2为pi,则这些点在10d1和pi之间% LOGSPACE(d1, d2,n)生成的数组长度为n,n的默认值为50if nargin =2 n=50; end %输入变元分析及n的默认值设置, nargin输入变元的数目if d2=pi d2=log10(pi); end %d2为pi时的设置y=(10).d1+(0:n-2)*(d2-d1)/(n-1), d2; %将结果返回到输出变元特定变量nar

65、gin表示输入变元的数目。nargout表示输出变元数目的变量。MATLAB常常根据nargin和nargout的数目不同而调用不同的程序段,从而体现它的智能作用。调用logspace(1,10,50) 要给出d1, d2, n的值。 自学 程序调试主程序不需要专门的调试命令,需要用调试命令的主要是函数程序。因为函数程序出错停机时,变量不能保存,无现场记录。会给调试带来很大困难,解决方法:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错依据。(2)在子程序中适当部位加keyboard命令。系统会暂停,等待用户键入命令。这是子程序的变量还存在于工作空间中,可以对它们进行检查。(3)将

66、函数文件的第一行加%号,成为程序文件,进行初步调试。第一行中的输入变元,可改用input或赋值语句来输入,调好后再改回函数文件。(4)使用MATLAB提供的调试命令。调试命令较繁琐,不作介绍。 2.7 MATLAB的数据分析函数库(datafun函数库)基本的数据分析 MATLAB的基本数据处理功能是按列向进行的,因此要求待处理的数据矩阵按列向分类,而行向则表示数据的不同样本。例如,10个学生的身高及3门课程分数列表如下:data= 154 49 83 67; 158 99 81 75; 155 100 68 86; 145 63 75 96; 145 63 75 96; 141 55 65 75; 155 56 64 85; 147 89 87 77; 147 96 54 100; 145 60 76 67 一些数据处理命令的结果命令功能身高课程1课程2课程3max(data)求各列最大值158 100 87 100min(data)求各列最小值141 49 54 67mean(data)求各列平均值149.2 73.0 72.8 82.4std(data)求各列标准差5.7504

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!