《第二章 MATLAB程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第二章 MATLAB程序设计基础.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 MATLAB程序设计基础matlab的工作方式:交互式;的工作方式:交互式;M文件方式。文件方式。M文件的作用:在文件的作用:在command window中输入已编辑保存中输入已编辑保存的的M文件名或函数,则自动搜索该文件,找到则按规定的计算文件名或函数,则自动搜索该文件,找到则按规定的计算任务以解释的方式逐一执行语句任务以解释的方式逐一执行语句。1 1信控学院电子教研室信控学院电子教研室 2.1 M文件的创建创建创建M文件文件2 2信控学院电子教研室信控学院电子教研室 2.2非函数文件(命令文件)一般来说,命令文件用于把很多需要在命令窗口输入的一般来说,命令文件用于把很多需要在命令
2、窗口输入的命令放在一起,以便于修改;命令放在一起,以便于修改;由于命令文件没有输入和输由于命令文件没有输入和输出参数,只是一些命令行的组合,所以命令文件比函数文件更出参数,只是一些命令行的组合,所以命令文件比函数文件更简单。命令文件可对工作空间中的变量进行操作,也可生成新简单。命令文件可对工作空间中的变量进行操作,也可生成新的变量。即使命令文件运行结束,其运行过程中所产生的变量的变量。即使命令文件运行结束,其运行过程中所产生的变量仍保留在工作空间中,直到关闭仍保留在工作空间中,直到关闭matlab或用相关删除命令。或用相关删除命令。例:x=0:pi/100:2*pi;y1=cos(x);y2=
3、sin(x);plot(y1,y2);end3 3信控学院电子教研室信控学院电子教研室 2.3函数文件一、函数文件的格式一、函数文件的格式函数文件一般用于把许多重复的程序段封装起来,使程函数文件一般用于把许多重复的程序段封装起来,使程序更加简洁。序更加简洁。例:function y=mymean(x);%该程序用于计算矢量中元素的平均值该程序用于计算矢量中元素的平均值%x为输入参数,代表输入的矢量为输入参数,代表输入的矢量%y为输出参数,代表矢量中元素的平均值为输出参数,代表矢量中元素的平均值%如果输入不是向量,则返回错误信息如果输入不是向量,则返回错误信息m,n=size(x);%判断输入是
4、否为矢量判断输入是否为矢量if(m=1)|(n=1)|(m=1&n=1)%如果输入不是矢量,显示出错信息如果输入不是矢量,显示出错信息 error(输入输入x必须是向量必须是向量);endy=sum(x)/length(x);4 4信控学院电子教研室信控学院电子教研室 1、函数定义、函数定义function y=ymean(x)functiony1,y2,=FN(x1,x2,)2、帮助文本、帮助文本3、函数体、函数体2、注释、注释二、函数文件参数个数的检查二、函数文件参数个数的检查narginnargout确定函数被调用时,输入、输确定函数被调用时,输入、输出参数的个数,函数体中可以根据输入参
5、数个数的不同出参数的个数,函数体中可以根据输入参数个数的不同而执行不同的操作。而执行不同的操作。注意:可以用任何编辑器编写m文件当编写函数文件时,其文件名必须与函数名一致5 5信控学院电子教研室信控学院电子教研室 例:function c=testarg(a,b)if(nargin=1)c=a.2;elseif(nargin=2)c=a+b;end6 6信控学院电子教研室信控学院电子教研室 例:用命令文件和函数文件完成相同的任务:求所有小于2000且为2的整数次幂的正整数。A:用命令文件的方式%求小于2000且为2的整数次幂的正整数f(1)=2;k=1;while f(k)1000f(k+1)
6、=f(k)*2;k=k+1;endf,k7 7信控学院电子教研室信控学院电子教研室 B、用函数文件的方式实现function f=tt(n)%求小于任何正整数且为2的整数次幂的正整数%c=tt(n),n可取任意正整数f(1)=2;k=1;while f(k)n/2f(k+1)=f(k)*2;k=k+1;endf8 8信控学院电子教研室信控学院电子教研室 2.4、全局变量和局部变量一、什么是全局与局部变量?一、什么是全局与局部变量?二、全局变量的定义二、全局变量的定义global BEG ENDExample:function s=mean1global k=BEG:END;s=sum(k)调用
7、如下:调用如下:global BEG END;BEG=1;END=10;S1=mean1;9 9信控学院电子教研室信控学院电子教研室 例:funciton all=weight_add(x,y)%add two variable with different weight.global alpha betaall=alpha*x+beta*y;在命令窗口内键入:global alpha betaalpha=1beta=2all=weight_add(1,1);1010信控学院电子教研室信控学院电子教研室 2.5程序控制流程语句一、循环控制一、循环控制1、for循环循环调用格式:fort=表达式
8、1:表达式2:表达式3循环体end注意:1)步长可正可负2)内部允许嵌套,for与end必须配对3)在循环体内改变t值不影响循环次数,但对表达式有影响2)若表达式为矩阵则循环列次1111信控学院电子教研室信控学院电子教研室 例1:for n=1:5例2s=0;for m=1:nfor i=1:2:99r(n,m)=m*n;s=s+i;endend end例3 i=1:3 例2 for I=1:3例5 a=1 3 5;2 6 8 x(I)=I I=2for I=a I=2 x(I)=Ix(I)=aendendend1212信控学院电子教研室信控学院电子教研室 、while循环语句循环语句调用格式
9、while 表达式语句体end注意:1)while必须与end成对2)当表达式计算对象为矩阵时,矩阵的所有值均为真时才执行3)循环量在循环体中增减1313信控学院电子教研室信控学院电子教研室 例1:求级数和 s=1+1/2+1/3+.+1/100s=0n=1;while n=100s=s+1/n;n=n+1;end例2:找阶乘超过10100的最小数n=2;while prod(1:n)1.e100n=n+1;end1414信控学院电子教研室信控学院电子教研室 二、条件控制语句二、条件控制语句1、if条件语句条件语句matlab中,if条件语句的功能是:如果满足某个条件则执行一条或一组语句,否则
10、就不执行其内部的语句,或者执行else后面的语句。调用格式如下:if condition或:if condition1statementstatement1endelseif conditon2 或:ifconditionstatement2statement1elsestatement2endend1515信控学院电子教研室信控学院电子教研室 注意:1)必须与END配对2)具有优先顺序性3)else elseif不是必须的2)若表达式为矩阵,则每个元素为真才执行例:if n0a=100;else if n=3a=n;elsea=0;endend1616信控学院电子教研室信控学院电子教研室 2
11、、一旦num为其中的某个值或字符串时,就执行所对应的指令,没有对应时,则执行otherwise后的语句。一般switch-case语句格式为:switch 控制变量(标量或字符串)case n1command1case n2command2.otherwise注意:与END配对commandn并行end1717信控学院电子教研室信控学院电子教研室 例:例:Switchinput_numcase 1disp(I love you);case 0disp(I dont like you)case 1disp(I hate you)case 2disp(my god)otherwisedisp(I
12、dont know you)end 1818信控学院电子教研室信控学院电子教研室 例:例:Switch kcase1set(gcf,color,r);case2set(gcf,color,w);case3set(gcf,color,y);otherwiseset(gcf,color,g);end1919信控学院电子教研室信控学院电子教研室 三、转移语句三、转移语句转移语句用来控制程序流向,在必要时中断循环体或函数的执行并进而执行下面的语句。Matlab提供了两种转移语句:break语句和return语句。Break语句:一般出现在循环语句中,它表示跳出循环体,即结束循环(它只能退出包含它的最内
13、层循环):例:eps=1;for num=1:100eps=eps/2;if(1+eps)=1eps=eps*2break2020信控学院电子教研室信控学院电子教研室 endendnumreturn语句:用于中断函数的执行,并返回调用它的上级函数。例:function y=test(x)if(x kx=0:0.01:1;kplot(x,user(x)ky=x.3;kreturn2727信控学院电子教研室信控学院电子教研室 二、生成选择菜单二、生成选择菜单menu函数可生成一个选择式的菜单,使用户能够选择输入。其调用格式为:k=menu(menuname,s1,s2si),其中k返回调用值,si
14、为字符串(菜单项,最多为项)。例:while 1 k=menu(choose a color,red,blue,close);if k=1 x=red elseif k=2 x=blue elseif k=3 break end end2828信控学院电子教研室信控学院电子教研室 三、建立按钮式演示菜单三、建立按钮式演示菜单Choices函数可以创建一个窗口,由其控制界面及其所对应的功能生成一个演示菜单,调用方法如下:choices(name,header,buttonlabels,callbacks)例:例:header=Easy Example;labels=str2mat(Choice
15、1,Choice 2,Choice 3);callbacks=str2mat(image(magic(1),image(magic(2),.image(magic(3);choices(EXAMPLE,header,labels,callbacks);2929信控学院电子教研室信控学院电子教研室 2.8字符串求值字符串求值一、一、eval feval字符串内容为字符串内容为matlab表达式,用表达式,用eval求表达式值。求表达式值。例:例:t=1/(I+j-1);forI=1:nfor j=1:na(I,j)=eval(t);endend3030信控学院电子教研室信控学院电子教研室 fev
16、al用于执行字符串代表的文件或函数用于执行字符串代表的文件或函数例:例:fun=sin;cos;log;k=input(choose function number:)x=input(enter value:);feval(fun(k,:),x)例:例:for I=1:10eval(p,int2str(I),=I.2)end3131信控学院电子教研室信控学院电子教研室 二、命令函数的重载二、命令函数的重载load tt.dathelp magictype rank与与load(tt.dat)help(magic)type(rank)完全一样完全一样3232信控学院电子教研室信控学院电子教研室
17、2.9错误和警告信息错误和警告信息1、eval与与lasterreval(字符字符1,字符串字符串2):若):若1运行出错,才运行运行出错,才运行2lasterr:给出一个包含最后一次错误信息的字符串。:给出一个包含最后一次错误信息的字符串。例如:例如:function c=catch(a,b)l=lasterr;j=findstr(l,matrix dimensions)if(isempty(j)m,n=size(a)p,q=size(b)3333信控学院电子教研室信控学院电子教研室 if(nq)b(:,n+1:p)=;elseif(np)a(p+1:m,:)=;elseif(mp)b(m+
18、1;p)=;endc=a+b;elsec=0;end;3434信控学院电子教研室信控学院电子教研室 2、函数、函数err和和fprintf显示出错信息,终止程序的执行显示出错信息,终止程序的执行3、warning2.10程序优化程序优化1、循环向量化、循环向量化例如:例如:I=0;n=0:0.01:9.99;for n=0:0.01:9.99y=cos(n)I=I+1;y(I)=cos(n);end3535信控学院电子教研室信控学院电子教研室 2、数组预定维、数组预定维zeros(m,n)cellstruct3、内存管理、内存管理clearpackquit/exitsaveload2、pcode命令命令3636信控学院电子教研室信控学院电子教研室