第5章 程序设计.docx

上传人:b****6 文档编号:6984879 上传时间:2023-01-14 格式:DOCX 页数:9 大小:19.84KB
下载 相关 举报
第5章 程序设计.docx_第1页
第1页 / 共9页
第5章 程序设计.docx_第2页
第2页 / 共9页
第5章 程序设计.docx_第3页
第3页 / 共9页
第5章 程序设计.docx_第4页
第4页 / 共9页
第5章 程序设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

第5章 程序设计.docx

《第5章 程序设计.docx》由会员分享,可在线阅读,更多相关《第5章 程序设计.docx(9页珍藏版)》请在冰豆网上搜索。

第5章 程序设计.docx

第5章程序设计

第五章程序设计

5.1M文件

用MATLAB语言编写的程序称为M文件。

包括命令文件和函数文件。

命令文件:

没有输入参数,也不返回输出参数。

函数文件:

可有输入参数,也可返回输出参数。

使用File菜单建立新的M文件或编辑已有的M文件。

1、命令文件

由命令行序列组成的一个文本型文件,在MATLABd的命令窗口输入该命令文件的名字,就会顺序执行该命令文件中的命令。

【例1】建立一个命令文件将变量a,b的值互换。

E51.m文件:

a=1:

9;

b=[11,12,13;14,15,16;17,18,19];

c=a;a=b;b=c;%变量不要求先定义后使用,如C

a

b

在MATLAB的命令窗口中输入e51,将会执行该命令文件。

5.2数据的输入、输出

1、input函数:

用于向计算机输入一个参数。

调用格式:

A=input(提示信息,选项);

注:

‘s’选项,则允许用户输入一个字符串。

例如想输入一个人的姓名:

xm=input('Whatisyourname:

',‘s’)

【例2】求一元二次方程a2+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)]

2、pause函数:

暂停程序的执行。

调用格式:

pause(延迟秒数)

注:

如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。

3、disp函数:

命令窗口输出函数。

调用格式:

disp(输出项)

注:

输出项为字符串或矩阵。

【例3】:

A='Hello,MATLAB';

disp(A)

输出为:

Hello,MATLAB

5.3程序设计

选择结构:

选择结构的语句有if语句和switch语句。

1、if语句

格式一:

if条件

语句组

end

格式二:

if条件

语句组1

else

语句组2

end

格式三:

if条件1

语句组1

elseif条件2

语句组2

……

elseif条件m

语句组m

else

语句组m+1

end

【例4】输入三角形的三条边,求面积。

A=input('请输入三角形的三条边:

');

ifA

(1)+A

(2)>A(3)&A

(1)+A(3)>A

(2)&A

(2)+A(3)>A

(1)

p=(A

(1)+A

(2)+A(3))/2;

s=sqrt(p*(p-A

(1))*(p-A

(2))*(p-A(3)));%sqrt开方

disp(s);

else

disp('不能构成一个三角形。

')

end

运行:

请输入三角形的三条边:

[456]

9.9216

【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。

c=input('请输入一个字符:

','s');

ifc>='A'&c<='Z'

disp(setstr(abs(c)+1));%abs()求ASC码,setstr()ASC码转字符

elseifc>='a'&c<='z'

disp(setstr(abs(c)-1));

else

disp(c);

end

2、switch语句

switch语句根据变量或表达式的取值不同,分别执行不同的语句。

其格式为:

switch表达式

case值1

语句组1

case值2

语句组2

……

case值m

语句组m

otherwise

语句组m+1

end

【例6】根据变量num的值来决定显示的内容。

num=input('请输入一个数');

switchnum

case-1

disp('Iamateacher.');

case0

disp('Iamastudent.');

case1

disp('Youareateacher.');

otherwise

disp('Youareastudent.');

end

循环结构:

for语句和while语句

1、for语句:

格式:

for循环变量=表达式1:

表达式2:

表达式3

循环体语句

end

注:

表达式1:

表达式2:

表达式3为循环初值:

步长:

终值。

缺省步长为1

2、while语句

格式:

while(条件)

循环体语句

end

【例7】设

求:

(1)求y<3时的最大n值。

(2)求与

(1)的n值对应的y值。

y=0;i=1;

while1%循环的条件为1,这是一个永真循环

f=1/(2*i-1);

y=y+f;

ify>3

break;%跳出循坏体

end

i=i+1;

end

n=i-1

y=y-f

3、循环的嵌套

【例8】求[100,1000]以内的全部素数。

n=0;

form=100:

1000

flag=1;j=m-1;

i=2;

whilei<=j&flag

ifrem(m,i)==0%rem函数m除以i的余数

flag=0;

end

i=i+1;

end

ifflag

n=n+1;

prime(n)=m;%变量prime存放素数

end

end

prime

5.4函数文件

函数文件是另一种形式的M文件,每一个函数文件定义一个函数。

事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。

1、函数文件格式

函数文件由function语句引导,其格式为:

function输出形参表=函数名(输入形参表)

注释说明部分

函数体

注:

其中函数名的命名规则与变量名相同。

输入形参为函数的输入参数,输出形参为函数的输出参数。

当输出形参多于1个时,则应该用方括号括起来。

【例9】编写函数文件求小于任意自然数n的Fibonacci(斐波那契)数列各项

functionf=ffib(n)

%用于求Fibonacci数列的函数文件

%f=ffib(n)

%1999年9月30日编

f=[1,1];

i=1;

whilef(i)+f(i+1)

f(i+2)=f(i)+f(i+1);

i=i+1;

end

将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2000的Fibonacci数。

ffib(2000)

2、函数调用

函数文件编制好后,就可调用函数进行计算了。

如上面定义ffib函数后,调用它求小于2000的Fibonacci数。

函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

【例10】

函数文件tran.m:

function[gama,theta]=tran(x,y)

gama=sqrt(x*x+y*y);

theta=atan(y/x);

调用tran.m的命令文件main1.m:

x=input('Pleaseinputx=:

');

y=input('Pleaseinputy=:

');

[gam,the]=tran(x,y);

gam

the

【例11】利用函数的递归调用,求n!

functionf=factor(n)

ifn<=1

f=1;%令f

(1)=1,转向rerurn语句

else

f=factor(n-1)*n;%用参数n-1继续调用本函数,直至f

(1)。

end

return;%返回,即退出本函数。

在命令文件main2.m中调用函数文件factor.m:

fori=1:

10

fac(i)=factor(i);

end

fac

3.函数所传递参数的可调性

MATLAB在函数调用上有一个与众不同之处:

函数所传递参数数目的可调性。

凭借这一点,一个函数可完成多种功能。

在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。

只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入、输出参数个数,从而决定函数如何进行处理。

【例12】nargin用法示例

函数文件examp.m:

functionfout=examp(a,b,c)

ifnargin==1

fout=a;

elseifnargin==2

fout=a+b;

elseifnargin==3

fout=(a*b*c)/2;

end

命令文件mydemo.m:

x=[1:

3];y=[1;2;3];

examp(x)

examp(x,y')

examp(x,y,3)

执行mydemo.m后的输出是:

ans=

123

ans=

246

ans=

21

5.5全局变量和局部变量

在MATLAB中,全局变量用命令global定义。

函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。

但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将共用这个变量。

全局变量的作用域是整个MATLAB工作空间,即全程有效。

所有的函数都可以对它进行存取和修改。

因此,定义全局变量是函数间传递信息的一种手段。

【例13】全局变量应用示例

先建立函数文件wadd.m,该函数将输入的参数加权相加。

functionf=wadd(x,y)

%addtwovariable

globalALPHABETA

f=ALPHA*x+BETA*y;

在命令窗口中输入:

globalALPHABETA

ALPHA=1;

BETA=2;

s=wadd(1,2)

输出为:

s=5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1