MATLAB常用基本语法.doc_第1页
MATLAB常用基本语法.doc_第2页
MATLAB常用基本语法.doc_第3页
MATLAB常用基本语法.doc_第4页
MATLAB常用基本语法.doc_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二部分 MATLAB基本语法1. 变量及其赋值2. 矩阵及其元素的赋值3. 矩阵的初等运算4. 逻辑判断及流程控制5. 绘图6. M文件和程序调试作业MATLAB语句形式变量表达式;%注释=将表达式的值赋予变量。当键入回车键该语句被执行。语句执行之后,窗口自动显示出执行结果。;结果不被显示,但它依然被赋值并在MATLAB工作空间中分配了内存。,隔开写在一行的多行命令。% 后为注释,不执行。.1 变量及其赋值标识符变量名,常量名 19个字符 如变量x,常量pi函数名,文件名 ,=, (12+2*(7-4)/32(2)在上述表达式输入完成后,按【Enter】键,该指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果。ans =2【 例 .2】 指 令 的 续 行 输 入 ( 以 下 格 式 在 除Notebook外的MATLAB环境中可运行) S=1-1/2+1/3-1/4+1/5-1/6 .+1/7-1/8S=0.6345空一格常用数学函数abs(x), sin(),cos(),tan(),asin(),acos(),atan()sqrt(), exp(),imag()(复数虚部), real()(复数实部),log(), log10(),conj()(共扼复数).2 矩阵及其元素的赋值向量的生成:用线性等间距生成向量矩阵start:step:end其中start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。a=1:2:10ans=3 5 7 9冒号The Colon Operator 1:10 %增量为1ans =1 2 3 4 5 6 7 8 9 10 100:-7:50ans =100 93 86 79 72 65 58 51 0:pi/4:pians =0 0.7854 1.5708 2.3562 3.1416或采用更为形象的描述方法:a=a11 a12 a13;a21 a22 a23;a31 a32 a33MATLAB输入数组有以下基本规则:(1)数组元素列入方括号中;(2)每行内的元素间用逗号或空格分开;(3)行与行之间用分号或回车键(Enter)隔开。注意:以上几种形式中,aij可以是数值、变量、表达式或字符串。如果是变量或表达式,则执行该语句前一定要首先通过用户输入或通过前面执行的表达式对变量或由变量组成的表达式进行赋值。表达式和变量可以任意组合形式出现。如果是字符串,则每一行中的字母个数应相同。例如:A = 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1A=16594310615211714138121A=16594310615211714138121求和sum,转置 transpose, 对角线diag sum(A) %计算A阵各列元素的和ans =34 34 34 34A= diag(A) %获取主对角线diagonal的元素16594310615211714138121ans =161071 sum(diag(A) %求对角线上元素之和ans =34下标SubscriptsA(i,j)表示A的i 行j列,例如A(4,2) 就是 15。 A(1,4) + A(2,4) + A(3,4) + A(4,4) %求4列的和ans =34单下标A(k)用于二维矩阵,则将矩阵视为一个长列向量,从第1列的A(1,1)开始的各列元素,从上到下一列一列的排顺序。如A(8)就是A(4,2)的另一种表示方法。矩阵下标里的冒号 sum(A(1:4,4) %计算第4列前4行元素 sum(A(:,end) %如果只要冒号本身,则代表矩阵行或列的所有元素,end 代表最后一行或列。ans =34 sum(A(1:16)/4ans =34基本矩阵zeros: 全0阵ones: 全1阵rand: 均分布随机矩阵randn 正态分布随机矩阵矩阵的逆 inv(A)A=1 2 3;1 4 9;8 10 1 inv(A)ans =8.6000 -2.8000 -0.6000-7.1000 2.3000 0.60002.2000 -0.6000 -0.2000其他输入数据方法load用TXT文本编辑数据,并存为magik.dat16.0 3.0 2.0 13.05.0 10.0 11.0 8.09.0 6.0 7.0 12.04.0 15.0 14.0 1.0用 loadmagik.dat.3 矩阵的初等运算1、转置对于实矩阵用()符号或(.)求转置结果是一样的;对于含复数的矩阵, ()则将同时对复数进行共轭处理,而 (.)则只是将其排列形式进行转置。a=1 2 3;4 5 6a=a=1 2 3;4 5 6.a=123456123456对于复数b=1+2i 2-7ib=1.0000 - 2.0000i2.0000 + 7.0000ib=1+2i 2-7i.b=1.0000 + 2.0000i2.0000 - 7.0000i2、四则运算与幂运算点运算+、 -、 * 、/ 、;.* 、. 、./、. 只有维数相同的矩阵才能进行加减运算。 只有当两个矩阵中前一个矩阵的列数和后一个矩阵的行数相同时,才可以进行乘法运算。 ab运算等效于求a*x=b的解(a-1b); a/b等效于求x*b=a的解(ab)。 只有方阵才可以求幂。 点运算是两个维数相同矩阵对应元素之间的运算,在有的教材中也定义为数组运算。【例 .5】求解下列方程组:2X1+3X2=74X1+X2=9a=2 3; 4 1,b=7;9;x=abx=21此例对于理解线性方程组的求解过程十分重要!a=1 2;3 4;b= 3 5;5 9注意比较左右相似算式的不同!3、矩阵的大小m,n=size(A,x):返回矩阵的行列数m与n,当x=1,则只返回行数m,当x=2,则只返回列数n。length(A)和max(size(A):返回行数或列数的最大值。【例.6】 a=1 2 3;3 4 5m,n=size(a)m=2n=3length(a)ans =3max(size(a)ans =3点运算:本节介绍MATLAB中的点(.)运算。在MATLAB中点运算是对同阶矩阵中逐个元素进行的算术运算。考虑下面的(34)阶矩阵:x11 x12 x13 x14 m11 m12 m13 m14 21 22 23 24x31 x32 x33 x34 m31 m32 m33 m34 x11 m11 x12 m12 x13 m13 x14 m14 zm = xm= x21 m21 x22 m22 x23 m23 x24 m24x31 m31 x32 m32 x33 m33 x34 m34 x x x x 21 22 23 24m m =x = 和m m m 点除、点指数:/ m x / m x / m x / mzd = x/ m= 21 21 22 22 23 23 24 24x31 / m31 x32 / m32 x33 / m33 x34 / m34 z d = x $ m = x 21$ m 21 x 22$ m 22 x 23$ m 23 x 24$ m 24 x 31 31 32 32 33 33 34 34 x11 11 12 12 13 13 14 14 即x / m x / m x / m x / m x11$ m11 x12$ m12 x13$ m13 x14$ m14 $ m x m x m x m$例子:为说明指数的点运算,考虑计算2.j。其中j=1,2,8。程序为:x=1:8;y = 2 $ x结果为:2 4 8 16 32 64 128 256字符串命令字符串要用单引号,并用括号括在里面。如:disp(text string) disp字符串显示命令text string在单引号里边的字符串可以作为矢量或矩阵的元素。使用disp命令或输入变量名就可以显示它们表示的字符串。如:a=this is adisp(a)a=this is atext string;text string.4 逻辑判断及流程控制1、关系运算符relational operations在处理关系运算时,运算元只有两个值即0和1。关系成立,结果为1,关系不成立时,结果为0。假设有:A=1 2 -1 -5 B=0 2 3 1 (注意) 小于ABans=0 0 1 1;A 大于ABans=1 0 0 0;A1 ans=0 1 0 0= 小于等于A= 大于等于A=B ans=1 1 0 0= 等于A=Bans=0 1 0 0 ; A=1 ans=1 0 0 0= 不等于A=B ans=1 0 1 1 ; A=1 ans=0 1 1 12、逻辑运算符logical operations在处理逻辑运算时,运算元只有两个值即0和1,所以如果指定的数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。设有:A=5 -4 0 -0.5;B=0 1 0 9& 与|或A&B=0 1 0 1 A&1=1 1 0 1 非A=0 0 1 01=0A|B=1 1 0 1A|1=1 1 1 13、流程控制Flow Controlif statementsswitch statementsfor loopswhile loopsbreak statements3.1、if,else,elseif语句(1)if逻辑表达式执行语句end当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行;若为假,则跳过结构中的内容,向下执行。else和elseif(2)ifelse逻辑表达式执行语句1执行语句2(3) ifelseifend逻辑表达式1执行语句1逻辑表达式2执行语句2endA=4,B=5;if A Bgreaterelseif A mysum=0; for i=1:1:100;mysum=mysum+i; end;mysummysum =5050在上面的式子中,可以看到 for 循环语句中 s3 的值为1。在 MATLAB 实际编程中,如果 s3 的值为 1,则可以在该语句中省略,故该语句可以简化成 for i=1:100。在实际编程中,i=1:100; mysum=sum(i)。在这一语句中,首先生成了一个向量 i, 然后用内部函数 sum() 求出 i 向量的各个元素之和,或更简单地,该语句还可以写成 sum(1:100)。While循环和for循环的区别在于:while的循环体被执行的次数不是确定的,而for循环体的执行次数是确定的。同样的问题在 while 循环结构下可以表示为mysum = 0;i=1;while (i HH=for j = 1:nH(i,j) = 1/(i+j);end0.50000.33330.25000.33330.25000.20000.25000.20000.1667endBreak 中止循环使程序从一个 for or while 循环中退出。在嵌套循环中,break 只能从最里层的循环跳出。3.4、switch语句格式:switch 表达式(可以是标量或字符串)case值1语句1执行方式:表达式的值和哪case值2种情况(case)的值相同,就语句2.otherwise语句nend执行哪种情况中的语句,如果不同,则执行otherwise中的语句。格式中也可以不包括otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。注意:switch在MATLAB和 C 不同与 C 语言的switch 不同,MATLAB的switch,如果第一个 case 为真,则其他的case语句不执行,所以不用break 语句。switch (rem(n,4)=0) + (rem(n,2)=0) % rem(a,b)是a整除b,求余数,rem(n,4)=0为余数和零的关系运算,若相等则为。case 0odd_M=magic(n)case 1single_even_M=magic(n)case 2double_even_M=magic(n)otherwiseerror(This is impossible)End同学们可以事先输入n的值,运行一下。曲线的拟合,多项式拟合曲线的最佳拟合为:数据点最小误差的平方和最小。这也叫做最小二乘。如果拟合的曲线为多项式,可以使用polyfit来完成它需要曲线的参数值及曲线的阶数。例如:x=0:0.1:1;y=-.447 1.978 3.28 6.16 7.08 7.347.66 9.56 9.48 9.30 11.2;p=polyfit(x,y,2);%polyfit获得多项式系数p=p1 p2 pnpn+1,y(x)=p1xn+pnx+pn+1xi=0:0.01:1;yi=polyval(p,xi);%polyval 用多项式求值plot(x,y,xi,yi);.5 基本绘图方法MATLAB 提供丰富灵巧的工具用图形来显示矢量vectors和矩阵matrices,包括标注等。.5.1 二维绘图如果指定两个矢量,plot(x,y)就是绘制 y vs x。例如:t=0:pi/100:2*pi;y=sin(t);plot(t,y,+)5.2 线型、点型和颜色plot(x1,y1,option)Option:用单引号括起,定义曲线属性颜色符是: c cyan(青), m magenta(紫) yyellow, r red, g green, b blue, w white, k black.线型符是: solid, dashed, : dotted, . fordash-dot, none no line.标记类型包括: +, o, *, x , s(方框)5.3 同时绘多条曲线plot(t, y1,y2,)plot(x1,y1,x2,y2,)plot(x1,y1,option1,x2,y2,option2,)t = 0:pi/100:2*pi;y1 = sin(t);y2 = sin(t.25);y3 = sin(t.5);plot(t,y1,t,y2,t,y3)在已存在的图中进行添加hold onhold offt=0:0.1:10;y1=sin(t);y2=cos(t);plot(t,y1,m:,t,y2,r)hold onplot(t,y1,bo,t,y2,k+)其他二维绘图指令可用于数值统计分析或离散数据处理或不同坐标系bar(x,y);hist(y,x);stairs(x,y);stem(x,y);%绘条形图%绘直方图%绘阶梯图%绘脉冲图semilogx(x,y); % x为log10,y为线性刻度semilogy(x,y); % y为log10, x为线性刻度polar(x,y); %极坐标。x为幅值向量,y为角度向量5.4 图形屏幕控制Figure Windowsfigurefigure(n)clfcloseclose allgrid ongrid offsubplot创建图形窗口打开第n张图形窗口清除图形窗口内容(注意与clc区别)关闭窗口关闭所有窗口在所画出的图形坐标中加入栅格除去图形坐标中的栅格子窗口t=0:pi/20:6*pi;figure(1) %选择图像plot(t,sin(t),r:*)grid on %在图形坐标中添加栅格,注意用在plot之后figure(2)plot(t,cos(t)grid ongrid off %删除栅格Subplots 分割图形显示窗口subplot(m,n,p)m:上下分割个数,n:左右分割个数,p:子图编号先按第1行编号,再第2行p值取表示左上角的块,p值等于行数和列数之和时表示右下角的块。随着数值的增大,显示的部分按照从左到右,从上到下的顺序定位。虚数和复数Imaginary andComplex Data当Z是一个复向量或矩阵时,以下两语句等价:plot(Z)plot(real(Z),imag(Z)极坐标曲线绘制:用 polar(t,r) ,其中 t 为角度向量, r 为幅值向量。 t=0:.1:8*pi;r=cos(5*t/4)+1/3;polar(t,r)Controlling Axesaxis(xmin xmax ymin ymax) %给出axis的最大范围axis square %使 x-axes 和 y-axes 具有相同的长度axis equal %使x- 和 y-axes 在屏幕的长度增量相同axis auto %使axis的缩放比例回到缺省,自动模式axis normal %恢复正常t = 0:pi/10:2*pi;plot(exp(i*t),-o)axis squareaxis equalaxis normal坐标轴的标注,图形标题,图注,文本title( )xlabel( )ylabel( )legend(string1,string2,string3, .)text( )ylabeltitlelegendt = 0:pi/100:2*pi;y1 = sin(t);y2 = sin(t-.25);y3 = sin(t-.5);plot(t,y1,t,y2,t,y3)title(正弦函数)legend(y1,y2,y3)xlabel(t)ylabel(y)xlabel轴的标注,栅格axis onaxis offgrid offgrid on%打开轴的标注%关闭轴的标注%关闭栅格%打开栅格5.5 三维曲线和曲面plot3(x,y,z,s)z=0:0.1:8*pi;x=cos(z);y=sin(z);plot3(x,y,z)关于图形的存储Matlab 有多种途径将图形转换成各种存储形式。利用剪贴板Clipboard:(1) 在图形窗口Figure里,Edit/CopyOptions选择模式Clipboard format,有Metafile和Bitmap两种,然后确定;(2) 在图形窗口Figure里,Edit/Copy;(3) 在Word、Powerpoint文本文件中粘贴。选择图形输出:(1) 在图形窗口Figure里,File/Export选择输出文件的格式*.emf、*.bmp、*.jpg、*.tif等,选择路径和文件名后保存。(2) 在Word、Powerpoint文本文件中选择插入/图片/来自文件选择图形保存:(1) 在图形窗口Figure里,File/Save as输出文件的格式*.fig,选择路径和文件名后保存。利用打印命令:(1) 激活图形窗口(2) 在命令窗口键入:print dbitmap fig_1(3) 在当前的目录下存入一个f

温馨提示

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

评论

0/150

提交评论