MATLAB基础及应用教程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章程序设计

在前面我们已经看到,MATLAB不但可以在命令窗直接输入命令并运行,而且还可以生成自己的程序文件,这就是我们通常说的一类以M为后缀的M文件,本章我们就来研究这类文件的形成方法。

M文件可分分为两大类,一是命令式M文件(也称为脚本文件,script),二是函数式M 文件(function)。两类文件的区别在于:

(1)命令式文件可以直接运行,函数式文件不能直接运行,只能调用。

(2)命令式文件运行时没有输入输出参量,函数式文件在调用时需要进行输入输出参量设置。

(3)命令式文件运行中可以调用工作空间的数据,运行中产生的所有变量为全局变量。

(4)函数式文件不能调用工作空间的数据,运行中产生的所有变量为局部变量。命令式文件运行中产生的所有变量为全局变量,可以调用和存储到工作空间的数据。

4.1 MATLAB的程序文件-M文件

4.1.1 脚本文件(Scripts)

当我们需要在命令窗进行大量的命令集合运行时,直接从命令窗口输入比较麻烦,这时就可以将这些命令集合存放在一个脚本文件(Scripts)中,运行时只需要输入其文件名就可以自动执行这些命令集合。需要注意的是,脚本文件运行所产生的变量都驻留在MATLAB 的工作空间中,同时脚本文件也可以调用工作空间中的数据。因此,脚本文件所涉及的变量是全局变量。前几章所涉及到的M文件都是这类脚本文件。

编辑一个脚本文件可以直接在命令窗口的左上角打开编辑窗进行编辑。

4.1.2 函数文件(function)

函数式文件(function)的构成

(1)函数定义行:

Function [输出参量]=gauss(输入参量)

(2):

完成函数的功能。

(3)函数说明。

(4)函数行注。

从上面构成的情况看,函数式文件实际上是完成输入参量与输出参量的转换,这样的转换是由函数文件名为gauss的文件来完成的。函数体的功能必须说明清楚输入参量与输出参量的关系。函数说明是用来解释该函数的功能的,函数行注是对程序行进行说明的。上面(1)和(2)是必须的。

【例4-1】分析下面函数文件。

%一个数列,任意项等于前两项之和,输入项数可以给出这个数列

function [a]=sul(n)

if n==1

a=1;

else if n==2

a=2;

end

b(1)=1;

b(2)=2;

for i=3:n

b(i)=b(i-2)+b(i-1);

end

a=b;

end

该函数文件的文件名为sul.m,在第一行给出了该函数的功能,即输入项数就可以自动给出

一个满足条件的数列。定义行规定了输入参数是该数列的项数,输出参数是该数列。从第三行起,是该函数的主体,主要说明了输入参数与输出参数的关系。当我们在命令窗或脚本文件中调用该函数就会有结果,如

>> p=sul(5)

p =

1 2 3 5 8

【例4-2】分析下面函数文件。

%一个数列的通项公式为a(n+1)=a(n)+n^2,给定任意项的值,求这个数列的后10项,并画离散函数图

function [b]=shulie(n,zhi)%zhi为初值

b(1)=zhi

for m=1:n-1

b(1+m)=b(m)+m^2

end

for j=n:n+9

b(1+j)=b(j)+j^2

end

x=n:(n+9)

stem(x,b(n:n+9))

end

如果在命令窗输入

shulie(5,10)

结果为

b =

10

x =

5 6 7 8 9 10 11 12 13 14 ans =

Columns 1 through 5

10 11 15 24 40 Columns 6 through 10

65 101 150 214 295 Columns 11 through 15

395 516 660 829 1025

以及

4.2 程序的流程控制

4.2.1 循环控制

1.硬循环语句(for-end)

所谓硬循环是指无条件的循环,其结构为

for(循环变量)

。。。

end

【例4-3】用硬循环语句形成一个5阶对角线元素为2的矩阵。

clear

n=5; %每个for和if都必须对应一个end

for i=1:n % i是循环变量

for j=1:n

if i==j

a(i,j)=2;

else

a(i,j)=0;

end

end

end

a

结果为

a =

2 0 0 0 0

0 2 0 0 0

0 0 2 0 0

0 0 0 2 0

0 0 0 0 2

根据结果,如果要两条主对角线元素都为2,如何调此程序?

注意,硬循环语句也可用break来跳出循环。

4.2.2 条件控制

1.条件分支语句(if-else-end)如果-那么-否则

结构

If 条件1

语句1

elseif 条件2

语句2

.

.

else

语句

end

注意这一结构的条件优先问题,当有多个条件时,如果条件1不满足,再判断elseif 后面的条件2…,如果所有的条件都不满足,在则执行else 后面的语句。

【例4-5】分析下面条件语句。

x=input('x=?')

if ((x+3)<2)

y=x*2;

elseif (x<2)

y=x^2;

else(x<1)

y=sqrt(x);

end

y

运行结果

x=?1.5

x =

1.5000

y =

2.2500

2.条件循环语句(while-end)

当条件满足时执行下一语句,否则就到end返回while。其结构为

while(表达式)

。。。

end

【例4-4】求阶乘大于或等于99^99的最小整数。

clear

相关文档
最新文档