《第四章 matlab程序设计ppt.ppt》由会员分享,可在线阅读,更多相关《第四章 matlab程序设计ppt.ppt(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、2019/10/19,电子教研室 qmw_,1,第四章 MATLAB程序设计基础,matlab的工作方式:交互式;M文件方式。M文件的作用:在command window中输入已编辑保存的M文件名或函数,则自动搜索该文件,找到则按规定的计算任务以解释的方式逐一执行语句。,2019/10/19,电子教研室 qmw_,2,4.1 M文件的创建创建M文件,2019/10/19,电子教研室 qmw_,3,4.2非函数文件(脚本文件)一般来说,命令文件用于把很多需要在命令窗口输入的命令放在一起,以便于修改;由于命令文件没有输入和输出参数,只是一些命令行的组合,所以命令文件比函数文件更简单。命令文件可对工
2、作空间中的变量进行操作,也可生成新的变量。即使命令文件运行结束,其运行过程中所产生的变量仍保留在工作空间中,直到关闭matlab或用相关删除命令。例:x=0:pi/100:2*pi;y1=cos(x);y2=sin(x);plot(y1,y2);end,2019/10/19,电子教研室 qmw_,4,4.3函数文件一、函数文件的格式函数文件一般用于把许多重复的程序段封装起来,使程序更加简洁。例:function y=mymean(x);%该程序用于计算矢量中元素的平均值%x为输入参数,代表输入的矢量%y为输出参数,代表矢量中元素的平均值%如果输入不是向量,则返回错误信息m,n=size(x);
3、%判断输入是否为矢量if(m=1)|(n=1)|(m=1,2019/10/19,电子教研室 qmw_,5,1、函数定义function y=ymean(x)functiony1,y2,=FN(x1,x2,)2、帮助文本3、函数体4、注释二、函数文件参数个数的检查narginnargout确定函数被调用时,输入、输出参数的个数,函数体中可以根据输入参数个数的不同而执行不同的操作。Nargchk用于检查输入函数个数是否正确,2019/10/19,电子教研室 qmw_,6,例:function c=testarg(a,b)if(nargin= =1)c=a.2;elseif(nargin= =2)c
4、=a+b;end注意:可以用任何编辑器编写m文件当编写函数文件时,其文件名必须与函数名一致,2019/10/19,电子教研室 qmw_,7,例:用命令文件和函数文件完成相同的任务:求所有小于2000且为2的整数次幂的正整数。A:用命令文件的方式%求小于2000且为2的整数次幂的正整数f(1)=2;k=1;while f(k)1000f(k+1)=f(k)*2;k=k+1;endf,k,2019/10/19,电子教研室 qmw_,8,B、用函数文件的方式实现function f=tt(n)%求小于任何正整数且为2的整数次幂的正整数%c=tt(n),n可取任意正整数f(1)=2;k=1;while
5、 f(k)n/2f(k+1)=f(k)*2;k=k+1;endf,2019/10/19,电子教研室 qmw_,9,4.4、全局变量和局部变量一、什么是全局与局部变量?二、全局变量的定义global BEG ENDExample:function s=mean1global k=BEG:END;s=sum(k)调用如下:global BEG END;BEG=1;END=10;S1=mean1;,2019/10/19,电子教研室 qmw_,10,例:funciton all=weight_add(x,y)%add two variable with different weight.global
6、alpha betaall=alpha*x+beta*y;在命令窗口内键入:global alpha betaalpha=1beta=2all=weight_add(1,1);,2019/10/19,电子教研室 qmw_,11,4.5程序控制流程语句一、循环控制1、for循环调用格式:fort=表达式1:表达式2:表达式3循环体end注意:1)步长可正可负2)内部允许嵌套,for与end必须配对3)在循环体内改变t值不影响循环次数,但对表达式有影响4)若表达式为矩阵则循环列次,2019/10/19,电子教研室 qmw_,12,例1:for n=1:5例2s=0;for m=1:nfor i=1
7、:2:99r(n,m)=m*n;s=s+i;endend end例3 i=1:3 例4for I=1:3例5 a=1 3 5;2 6 8 x(I)=I I=2for I=a I=2 x(I)=Ix(I)=aendendend,2019/10/19,电子教研室 qmw_,13,、while循环语句调用格式while表达式语句体end注意:1)while必须与end成对2)当表达式计算对象为矩阵时,矩阵的所有值均为真时才执行3)循环量在循环体中增减,2019/10/19,电子教研室 qmw_,14,例1:求级数和 s=1+1/2+1/3+.+1/100s=0n=1;whilen=100s=s+1/
8、n;n=n+1;end例2:找阶乘超过10100的最小数n=2;while prod(1:n)1.e100n=n+1;end,2019/10/19,电子教研室 qmw_,15,二、条件控制语句1、if条件语句matlab中,if条件语句的功能是:如果满足某个条件则执行一条或一组语句,否则就不执行其内部的语句,或者执行else后面的语句。调用格式如下:if condition或:if condition1statementstatement1endelseif conditon2 或:ifconditionstatement2statement1elsestatement2endend,2019
9、/10/19,电子教研室 qmw_,16,注意:1)必须与END配对2)具有优先顺序性3)else elseif不是必须的4)若表达式为矩阵,则每个元素为真才执行例:if n0a=100;else if n=3a=n;elsea=0;endend,2019/10/19,电子教研室 qmw_,17,2、 一旦num为其中的某个值或字符串时,就执行所对应的指令,没有对应时,则执行otherwise后的语句。一般switch-case语句格式为:switch 控制变量(标量或字符串)case n1command1case n2command2. .otherwise注意:与END配对commandn
10、并行end,2019/10/19,电子教研室 qmw_,18,例:Switchinput_numcase 1disp(I love you);case 0disp(I dont like you)case 1disp(I hate you)case 2disp(my god)otherwisedisp(I dont know you)end,2019/10/19,电子教研室 qmw_,19,例:Switch kcase1set(gcf,color,r);case2set(gcf,color,w);case3set(gcf,color,y);otherwiseset(gcf,color,g);e
11、nd,2019/10/19,电子教研室 qmw_,20,三、转移语句转移语句用来控制程序流向,在必要时中断循环体或函数的执行并进而执行下面的语句。Matlab提供了两种转移语句:break语句和return语句。Break语句:一般出现在循环语句中,它表示跳出循环体,即结束循环(它只能退出包含它的最内层循环):例:eps=1;for num=1:100eps=eps/2;if (1+eps)=1eps=eps*2break,2019/10/19,电子教研室 qmw_,21,endendnumreturn语句:用于中断函数的执行,并返回调用它的上级函数。例:function y=test(x)i
12、f(x kx=0:0.01:1; kplot(x,user(x) ky=x.3; kreturn,2019/10/19,电子教研室 qmw_,28,二、生成选择菜单menu函数可生成一个选择式的菜单,使用户能够选择输入。其调用格式为:k=menu(menuname,s1,s2si),其中k返回调用值,si为字符串(菜单项,最多为项)。例: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 end,2019/10/19,电子教研室 qmw_,29,三、
13、建立按钮式演示菜单Choices函数可以创建一个窗口,由其控制界面及其所对应的功能生成一个演示菜单,调用方法如下:choices(name,header,buttonlabels,callbacks)例:header = Easy Example; labels = str2mat(Choice 1,Choice 2,Choice 3); callbacks = str2mat(image(magic(1),image(magic(2), . image(magic(3); choices(EXAMPLE, header, labels, callbacks);,2019/10/19,电子教研室 qmw_,30,4.8错误和警告信息1、函数err和fprintf显示出错信息,终止程序的执行 if(m=1)|(n=1)|(m=1end2、warning 用法同上,2019/10/19,电子教研室 qmw_,31,4.9程序优化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);end,2019/10/19,电子教研室 qmw_,32,2、数组预定维zeros(m,n)cellstruct3、内存管理clearpackquit/exitsaveload,