MATLAB5程序设计PPT推荐.ppt
《MATLAB5程序设计PPT推荐.ppt》由会员分享,可在线阅读,更多相关《MATLAB5程序设计PPT推荐.ppt(58页珍藏版)》请在冰豆网上搜索。
10;
b=11,12,13,14;
15,16,17,18;
c=a;
a=b;
b=c;
ab然后在MATLAB的命令窗口中输入e1,将会执行该命令文件。
目录,函数文件,与命令文件不同,函数文件犹如一个“黑箱”,把一些数据送进并经加工处理,再把结果送出来.MATLAB提供的函数指令大部分都是由函数文件定义的.,用M文件自定义函数,开头为:
functionyname=fname(xname)yname:
因变量名,fname:
函数名,xname:
自变量名.文件名为fname,即与函数名相同.,例5.2建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。
首先建立函数文件e2.m:
functiona,b=e2(a,b)%ee2c=a;
调用:
a,b=e2(2,3)然后在MATLAB的命令窗口调用该函数文件:
x=1:
y=11,12,13,14;
x,y=e2(x,y),目录,由上例可以看出函数文件的一般格式为:
function输出表函数名(输入表)注释说明部分函数体语句,函数文件的第一行必须是以关键字function开始,表明该文件是函数文件输入表是以逗号相分隔的形参输出表是函数的返回值如果返回值只有一个方括号可以省略;
如果返回值不止一个,输出表中的各个变量要以逗号隔开,标准的函数文件基本结构
(1)函数定义行(关键字function)functionout1,out2,.=filename(in1,in2,.)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。
标准的函数文件基本结构
(2)第一行帮助行,即H1行以(%)开头,作为lookfor指令搜索的行,可以使程式易于了解与管理。
特别要说明的是,第一注解行通常用来简短说明此M档案的功能,以便lookfor能以关键字比对的方式来找出此M档案。
举例来说,e2.m的第一注解行包含ee2这个字,因此如果键入lookforee2,MATLAB即可列出所有在第一注解行包含ee2的M档案,因而e2.m也会被列名在内。
(3)函数体说明及有关注解,以(%)开头,用以说明函数的作用及有关内容(4)函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。
如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量.,例5.3编写函数文件求半径为r的圆的面积和周长。
函数文件如下:
functions,p=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长s=pi*r*r;
p=2*pi*r;
将以上函数文件以文件名fcircle.m存入c:
matlabr11work下,然后在MATLAB命令窗口调用该函数:
s,p=fcircle(10),目录,例5.4建立一个自变量为m,n的函数,用其构造mn矩阵,其元素随机取均匀分布在09中的整数:
functiona=randint(m,n)a=floor(10*rand(m,n);
以上两句存为M文件randint.m.用法:
A=randint(2,3)%z则A为23矩阵,其元素为随机取自09中的整数.函数M文件中的变量为局部变量,要想在CommandWindow或其他M文件中可调用,必须在这些地方把此变量说明为global:
例如,globala;
注意,M文件必须存放在MATLAB的搜索路径中才可被调用.,函数调用函数调用的一般格式是:
输出实参表=函数名(输入实参表)例5.5利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。
函数文件tran.m:
functionrho,theta=tran(x,y)rho=sqrt(x*x+y*y);
theta=atan(y/x);
调用tran.m的命令文件main1.m:
x=input(Pleaseinputx=:
);
y=input(Pleaseinputy=:
rho,the=tran(x,y);
rhothe,目录,例5.6利用函数的递归调用,求n!
。
递归调用函数文件factor.m:
functionf=factor(n)ifn=1f=1;
elsef=factor(n-1)*n;
end在命令文件main2.m中调用函数文件factor.m求s=1!
+2!
+3!
+4!
+5!
目录,n=input(Pleaseinputn=:
s=0;
fori=1:
nnfa=factor(i);
s=s+nfa;
ends,main2Pleaseinputn=:
5s=153,函数所传递参数的可调性在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
目录,例5.7nargin用法示例。
函数文件examp.m:
functionfout=examp(a,b,c)ifnargin=1fout=a;
elseifnargin=2fout=a+b;
elseifnargin=3fout=(a*b*c)/2;
end命令文件mydemo.m:
3;
y=1;
2;
examp(x)examp(x,y)examp(x,y,3),目录,mydemoans=123ans=246ans=21,5.2数据的输入输出,5.2.1input函数调用格式为:
A=input(提示信息,选项);
其中,提示信息为一个字符串,用于提示用户输入什么样的数据。
如果在input函数调用时采用s选项,则允许用户输入一个字符串。
例如,想输入一个人的姓名,可采用命令:
xm=input(Whatsyourname?
s)Whatsyourname?
xiaoweixm=xiaowei,目录,5.2.2disp函数调用格式为disp(输出项)其中输出项既可以为字符串,也可以为矩阵。
注意:
用disp函数显示矩阵时将不显示矩阵的名字,而且其格式更紧密,且不留任何没有意义的空行。
目录,例5.8求一元二次方程ax2+bx+c=0的根。
程序如下:
a=input(a=?
b=input(b=?
c=input(c=?
d=b*b-4*a*c;
x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);
disp(x1=,num2str(x
(1),x2=,num2str(x
(2),目录,disp(x)显示x的内容,与x的区别是:
前者仅显示x的内容,后者多个x=.,a=?
3b=?
4c=?
9x1=-0.66667+1.5986i,x2=-0.66667-1.5986i,5.2.3pause函数其调用格式为:
pause(延迟秒数)如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。
若要强行中止程序的运行可使用Ctrl+C命令。
目录,5.2.4函数句柄函数句柄是matlab6特有的语言结构,其优点:
方便地实现函数间互相调用兼容函数加载的所有方式拓宽子函数包括局部函数的使用范围提高函数调用的可靠性减少程序设计中的冗余提高重复执行的效率数组、结构数组、细胞型数组结合定义数据,函数句柄的创建和显示定义函数句柄的定义只需在提示符后添加相应函数的函数名f_h=plotf_h=plot函数句柄的内容通过functions显示functions(f_h)ans=function:
plottype:
overloadedfile:
MATLABbuilt-infunctionmethods:
1x1struct,matlab的函数类型simple未加载的内部函数、m文件overloaded加载的内部函数、m文件subfunction子函数constructormatlab类的创建函数private局部函数,函数句柄的调用和操作可通过函数feval进行函数句柄的调用feval(函数句柄)f_h1=peaksfeval(f_h1)feval(函数句柄,参数列表)f_h=plotfeval(f_h,0:
10,0:
10),函数句柄与函数名字符串转换func2str函数名字符串转换函数句柄funh=str2func(det)funh=detstr2func函数句柄转换函数名字符串func2str(funh)ans=det,MATLAB流程控制循环语句for,while条件转移ifend,ifelseifelseend开关语句switchcase注释语句%中断语句break暂停语句pause回显语句echoon/off(用来控制m文件在执行过程中是否显示),在条件表达式中,通常都是由关系操作符,=,=,=等逻辑操作符&
,|,等逻辑函数:
isequal若是相等则为真isempty若是空矩阵则为真isstr若是字符串则为真,5.3选择结构,5.3.1if语句在MATLAB中,if语句有3种格式。
1.单分支if语句语句格式为:
if条件语句组end当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。
目录,2.双分支if语句语句格式为:
if条件语句组1else语句组2end当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。
目录,例5.9计算分段函数值,目录,程序如下:
x=input(请输入x的值:
ifx=10y=cos(x+1)+sqrt(x*x+1);
elsey=x*sqrt(x+sqrt(x);
endy请输入x的值:
y=47.1893,12,3.多分支if语句语句格式为:
if条件1语句组1elseif条件2语句组2elseif条件m语句组melse语句组m+1end,目录,例5.10输入一个字