第4章MATLAB程序设计 《计算机仿真技术与CAD》

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
4.1 MATLAB的M文件
因为MATLAB本身可以被认为是一高效 的语言,所以用它可编写出具有特殊意 义的磁盘文件来,这些磁盘文件是由一 系列的MATLAB语句组成,它既可能是一 系列窗口命令语句,又可以是由各种控 制语句和说明语句构成的函数文件。
由于它们都是由ASCII码构成的, 其 扩展名均为“.m”,故统称为m文件。
27
MATLAB还提供了其他两种条件结构: if-else-end 格式和if-else if-end 格式,这 两种格式的调用方法分别为

if expression

statements1

else

statements2

end
28

if expression1

statements1
3
由于M文件具有普通的文本格式,因而 可以用任何编辑器建立和编辑。但一般最常 用、而且最为方便地是使用MATLAB自带 的编辑器,即利用MATLAB操作界面中的 菜单命令FileNewM-File或FileOpen打 开的M文件编辑窗口对M文件进行建立和编 辑。
MATLAB为了进一步方便用户对M文件 的建立和编辑,在窗口中也设置了快捷工具 “ ”和“ ”。

statements2;

case case-expression3

statements3;



otherwise

statementsn;

end
31
switch-case-otherwise语句中,switchexpression给出了开关条件,当有caseexpression与之匹配时,就执行其后的语句, 如果没有case-expression与之匹配,就执行 otherwise后面的语句。在执行过程中,只 有一个case命令被执行。当执行完命令后, 程序就跳出分支结构,执行end后面的命 令。

循环体条件组

end
其执行方式为,若条件式中的条件成立, 则执行循环体的内容,执行后再判断表 达式是否仍然成立,如果表达式不成立, 则跳出循环,向下继续执行。
21
例如对于上面的例子,如果改用while循环语 句,则可以写出下面的程序
%ex4_3_2.m sum=0;i=1; while (i<=100) sum=sum+i;i=i+1; end MATLAB提供的循环语句for和while是允
Hale Waihona Puke Baidu
if expression

statements

end
当给出的条件式expression成立时,则执行 该条件块结构中的语句内容statements,执
行完之后继续向下执行,若条件不成立, 则跳出条件块而直接向下执行。
25
m
例4-4 求满足 i 1000 的最小m值. i 1
解 MABLAB程序
和其它高级语言一样,MATLAB也提 供了条件转移语句、循环语句等一些常 用的控制语句,从而使得MATLAB语言 的编程显得十分灵活。
18
4.2.1 循环语句
MATLAB中可以使用两种循环语句: for语句和while语句。
1. for语句的基本格式为
for 循环变量=表达式1: 表达式3: 表达式2
函数文件的功能是建立一个函数,且这个 函数可以同MATLAB的库函数一样使用,它与 文本文件不同,在一般情况下不能单独键入 函数文件的文件名来运行一个函数文件,它 必须由其它语句来调用。
11
函数文件允许有多个输入参数和多个输出 参数值,其基本格式如下
function [f1,f2,f3,…]=fun(x, y, z,…)
32
例对于以下MATLAB函数文件myfun.m。
function f=myfun(n)

switch n

case 0

f=1;

case 1

f=2;
otherwise

f=8;

end
在MATLAB命令窗口输入以下命令
>>y=myfun(1)
结果显示:
y=
2
33
break
end
end
30
2. switch-case-otherwise语句的基本格式
MATLAB中switch-case-otherwise语句的调用 格式为

switch switch-expression

case case-expression1

statements1;

case case-expression2
%ex4_4.m mysum=0; for m=1:1000
mysum=mysum+m; if (mysum>1000) break; end end m
运行结果
m= 45
26
注意, 这里使用了break命令,其作用就是中 止上一级的for 语句循环过程,同样while循环 语句也在条件转移语句中起着相当重要的作 用,因为在MATLAB下没有提供绝对转移的 指令。
16
由于m文件具有普通的文本格式,因 而可以用任何编辑程序建立和编辑,但一 般最常用、而且最为方便地是使用 MATLAB命令窗口的File|New或File|Open 菜单项对m文件进行建立和编辑。
17
4.2 MATLAB的程序结构
MATLAB是一个功能极强的高度集 成化程序设计语言,它具备一般程序设 计语言的基本语句结构,并且它的功能 更强,由它编写出来的程序结构简单, 可读性强。
许多级嵌套的,而且它们之间也允许相互嵌 套,这和C语言等高级程序设计语言是一致的。
22
4.2.2 程序流控制语句
在程序设计语言中,经常会遇到提前终 止循环、跳出子程序、显示执行过程等, 此时就要用到以下控制程序流命令。
1. echo命令 2. break命令 3. continue命令 4. pause命令 5. return命令
其中 i,j,k,…是相应的实际输入参数, 而y1,y2,y3,…是相应的实际输出参数值。
13
例4-2 利用MATLAB的函数文件,求以下方程
y1 3x1 x2 x3

y2

3x1

x2

x3
在x1= -2, x2= 3, x3= 1时的值
解 ① 由于函数文件的建立与文本文件完全一样,故 应首先根据例中所给方程在MATLAB的M文件编辑器 下,建立以下函数文件ex4_2.m

else if expression2

statements2

else if expression3

statements3



end
29
例4-5 如果想对一个变量x自动赋值。当从键盘输
入y或Y时(表示是), x自动赋为1值;当从键盘输入n 或N时(表示否), x自动赋为0值;输入其他字符时终 止程序。
%ex4_2.m function [b1,b2]=ex4_2(a1,a2,a3) b1=3*a1+a2+a3; b2=3*a1-a2-a3;
14
② 当以上函数文件ex4_2.m建立后,在 MATLAB命令窗口中输入以下命令
>>x1=-2;x2=3;x3=1;[y1,y2]=ex4_2(x1,x2,x3) 结果显示: y1= -2 y2= -10

注释说明语句

函数体语句
其 中 x, y, z,… 是 形 式 输 入 参 数 ; 而
f1,f2,f3,…是返回的形式输出参数值;fun是 函数名。
12
实际上,函数名一般就是这个函数文件 的磁盘文件名,注释语句段的内容同样可 用help命令显示出来。
调用一个函数文件只需直接使用与这个 函数一致的格式 [y1,y2,y3,…]=fun(i,j,k,…)
信息工程学院
College of information engineering
再 见!
34
第4章 MATLAB程序设计
本章内容
MATLAB的M文件的建立与使用 ; MATLAB的文本文件与函数文件的区别与特点 MATLAB的循环语句 ; MATLAB的控制语句 ; MATLAB的转移语句 。
1
MATLAB语言仅靠一条一条地输入语句, 难以实现复杂功能,为了实现诸如循环、条件、 分支等功能,MATLAB利用了M文件,M文件 是由一系列的MATLAB语句组成。
23
4.2.3 条件转移语句 在程序设计中,经常要根据一定的条
件来执行不同的命令。当某些条件满足时, 只执行其中的某个命令或某些命令。在 MATLAB中,条件转移语句包括:
if-else-end语句
switch-case-otherwise语句。
24
1. if-else-end语句的基本格式
在MATLAB中,最简单的条件结构:ifend语句命令格式为
5
例4-1 利用MATLAB的文本文件,求方程

y1 y2

3x1 3x1

x2 x2

x3 x3
在x1= -2, x2=3, x3=1时的值。
解 ① 首先在MATLAB的操作界面中,利用菜单命令 FileNewM-File,打开M文件编辑器,然后在编 辑器中根据例中所给方程编写以下文本文件,并以 ex4_1_1为文件名进行保存
%ex4_1_2.m y1=3*x1+x2+x3 y2=3*x1-x2-x3
9
当以上文本文件ex4_1_2.m建立后,利用以 下命令,同样可以得到以上结果。
>>x1=-2; x2=3; x3=1; ex1_1_2
10
以上两种方式下,文本文件中变量的值都 被保存下来,这与下面的函数文件是不同的。
4.1.2 函数文件
解 可由下列的while循环程序来执行。
%ex4_5.m
ikey=0;
while(ikey==0)
s1=input('若给x赋值请输入[y/n]? ','s');
if(s1=='y'|s1=='Y')
ikey=1; x=1
else if (s1=='n'|s1=='N') ikey=1; x=0, end
MATLAB实际上可以认为是一种解释性语 言,用户可以在MATLAB工作环境下一条一条 地键入命令,也可以直接键入用MATLAB的语 言编写的M文件名,或它们结合起来使用,这 样MATLAB软件对此命令或M文件中各条命令 进行翻译,然后在MATLAB环境下对它进行处 理,最后返回运算结果。所以说MATLAB语言 的一般结构为:窗口命令+M文件。
%ex4_1_1.m x1=-2;x2=3;x3=1; y1=3*x1+x2+x3 y2=3*x1-x2-x3
6
7
② 当以上文本文件ex4_1_1.m建立后,在 MATLAB 命令窗口中输入 >>ex4_1_1 回车后结果显示: y1=
-2 y2=
-10
8
由于文本文件中的变量为全局变量,故以 上变量x1,x2,x3的值,也可在文本文件外先给 定,此时的文本文件为
4
4.1.1 文本文件 文本文件(也称为脚本文件,简称为
MATLAB的程序)是一系列的MATLAB语句 组成,它类似于DOS下的批处理文件,在 MATLAB的提示符下直接键入文本文件名, 便可自动执行文件中的一系列命令,直至 给出最终结果。 文本文件在工作空间中运算的变量为 全局变量。

循环语句组
end
19
例4 3
100
求i 的值。
i 1
例 MABLAB程序
%ex4_3_1.m
mysum=0;
for i=1:100

mysum=mysum+i;
end
mysum
运行结果
mysun=

5050
20
2.while语句的基本结构为

while (条件式)
15
函数文件中定义的变量为局部变量,也 就是说它只在函数内有效。即在该函数返 回后,这些变量会自动在MATLAB工作空间 中清除掉,这与文本文件是不同的,但可 通过命令 global <变量>
来定义一个全局变量。 函数文件与文本文件另一个区别在于其
第一行是由function开头的,且有函数名 和输入形式参数与输出形式参数,若是没 有这一行的磁盘文件就是文本文件 。
相关文档
最新文档