当前位置:首页 >> 小学教育 >>

第七讲 matlab语言的语句控制


MATLAB的 第七章 MATLAB的 语句流程与控制

—— matlab语言称为第四 代编程语言,程序简洁、可读 性很强而且调试十分容易。 是matlab重要组成部分。

matlab的工作模式 的工作模式: 的工作模式
? 命令驱动模式 交互式的命令行工作模式) 命令驱动模式( ? m文件模式 文件模式

/> 命令驱动模式
通常matlab以命令驱动模式工作,即在 matlab 窗口下当用户输入单行命令时, matlab 立即处理这条命令,并显示结果, 这就是matlab命令行方式。 命令行操作时,matlab窗口只允许一次 执行一行上的一个或几个语句。

例如: >>x1=0:10 x1 = 0 1 2 3 4 5 6 7 8 >>x2=0:3:11 x2 = 0 3 6 9 >>x3=11.5:-3:0 x3 = 11.5000 8.5000 5.5000 2.5000

9 10

>>x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 = 0 1 2 3 4 5 6 7 8 x2 = 0 3 6 9 x3 = 11.5000 8.5000 5.5000 2.5000

9 10

缺点: 缺点:
? 在matlab窗口输入数据和命令进行计算 时,当处理复杂问题和大量数据时是不 方便的。因此应编辑m文件。 ? 命令行方式程序可读性差,而且不能存 储,对于复杂的问题,应编写成能存储 的程序文件。

m文件模式 文件模式
将matlab语句构成的程序存储成以m为扩 展名的文件,然后再执行该程序文件,这 种工作模式称为程序文件模式。 程序文件不能在命令窗口下建立,因为命 令窗口只允许一次执行一行上的一个或几 个语句。

第一节 M文件 文件
一、m文件的创建 文件的创建
1. 在matlab窗口 点击file 菜单 new → m-file

2. 在matlab窗口工具栏上单击图标 。。

3. 在matlab命令窗口运行edit。

二、m文件分类 文件分类
? 命令文件(脚本文件) ? 函数文件

1. 命令文件 — 简单的 文件 简单的m文件
命令文件实际上是一串指令的集合,与在命 令窗口逐行执行文件中的所有指令,其结果 是一样的。没有输入输出参数。 命令文件包括两部分:注释文件和程序文件

%This program is diaohuan. % 2010-3-12 a = [1:9]; b=[2 5 6;9 8 0;12 16 18]; c=a; a=b; b=c; 注: ?在语句行之后输入分号使其及中间结果不在屏幕上显示 ,以提高执行速度。 ?查看此文件的结果,在命令窗口执行此文件即可(即在 命令窗口输入该文件名)。

2. m函数文件— 需要输入变量,返回输出变量 需要输入变量,
matlab用户可以根据需要编辑自己的m文 件,它们可以像库函数一样方便的调用, 从而极大地扩展了matlab 的能力。

? ?

对于某一类特殊问题,如创建了许多m 函数文件,则可形成新的工具箱。 这种用matlab语言创建定义新的matlab 函数的功能,正体现了matlab语言强大 的扩展功能。

函数m文件的格式: 函数 文件的格式: 文件的格式
function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段

说明: 说明:
? ? ? ? 定义行。 函数帮助信息行。 函数体。 注释部分。

特定规则: 特定规则:
? ? ? m文件的文件名必须是<函数名> .m。 程序中的变量均为局部变量,不保存在工 作空间中。变量只在函数运行期间有效。 函数名的命名规则与变量名相同。

例:求小于任意自然数n的Fibonacci数列 求小于任意自然数 的 数列 各项的和。 各项的和。
function [f,i]=ffib(n) %FFIB 是一个示范性的例子 %用于求Fibonacci数列的函数文件 %f=ffib(n) %2010-3-12 f=[1,1]; i=1; while f(i)+f(i+1)<n f(i+2)=f(i)+f(i+1); i=i+1; end

第二节 控制结构
matlab语言的程序结构与其它高级语言 是一致的,分为 ? ? ? 顺序结构 循环结构 分支结构。

一、条件分支结构——根据一定条件来执行的各条语句
1. if语句 语句
表达式 %if(表达式) 执行语句 end ? if 表达式 ——— 是 语句1 else ———— 否 语句2 end ? if

3 if

表达式1 ——— 多分支 语句1 elseif 表达式2 这种结构实现了一种 语句2 多路选择,比较复杂。可 elseif 表达式3 替代一般高级语言中的 语句3 3 · switch-case-end语句。 · · else 语句n 注:有几个if语句,对应有几个end。 end

2. switch语句 语句
switch 数值或字符串 case 数值 语句段1 case 数值 语句段2 · · otherwise 语句段n end

function f=TranGrade(x) switch x/10; %switch(x/10) case {10,9}; f='A'; case 8, f='B'; case 7, f='C'; case 6, f='D'; otherwise f='E'; end

在条件表达式中,通常都是由 关系操作符 >, < ,<=, >=, = =, ~= 等 逻辑操作符 &,| , ~等 逻辑函数: isequal —— 若是相等则为真 isempty ——若是空矩阵则为真 isstr —— 若是字符串则为真

例:编写m函数,计算函数值 x (x<1) 2x-1 (1<x<10) 3x-11 (x>=10) function f=three(x) if(x<1) f=x; else if(x>1&x<10), f=2*x-1; else,f=3*x-11; end end

3. 检测语句
try—catch语句用于检测错误并改变流程。

try 语句段1 catch 语句段2 end

n=4; a=magic(3); try a_n=a(n,:); catch a_n=a(end,:) end lasterr

a_n = 4 9 2

ans = Attempted to access a(4,:); index out of bounds because size(a)=[3,3].

例 矩阵乘法运算要求两矩阵的维数相容,否则 会出错。先求两矩阵的乘积,若出错,则自动 转去求两矩阵的点乘。 A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因

二、循环结构

1. for — end
语法为: for i = 表达式 可执行语句 end

(表达式为一个向量)

例:利用for循环求1!+2!+3!+ sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end

+5!的值。

sum = 153

注:此函数名不能为sum。书上的例子较好

while — end 循环
语法为:while 表达式 循环体语句 end
表达式一般是由逻辑运算和关系运算以及一般 运算组成的,以判断循环的进行和停止;只 要表达式的值 非0,继续循环;直到表达式 值为0,循环停止。

例:用while循环求1~100间整数的和。 sum=0; i=1; while i<=100 sum=sum+i; i=i+1; end sum =

5050

三、matlab程序流的控制 程序流的控制

1. input -- 提示用户从键盘输入数值、字符串、表达式
调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示 用户输入什么样的数据。

例:n=input('How many apples= ')
How many apples= 5 n= 5 如果选项是‘s’,则允许用户输入一个字符串。 例如,想输入一个人的姓名,可采用命令: xm=input('What''s your name?','s')

例 求一元二次方程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)];

2. pause ---暂停,等待用户响应
其调用格式为: pause(延迟秒数) 如果省略延迟时间,直接使用pause,则 将暂停程序,直到用户按任一键后程 序继续执行。

3. disp函数
调用格式为: disp(输出项) 其中输出项既可以为字符串,也可以为矩 阵。也可以为变量名。 注意:用disp函数显示矩阵时将不显示矩阵 的名字,而且其格式更紧密,且不留任何 没有意义的空行。

例:disp(‘hello’) disp([1 2;4 5]) a=eye(3) disp(a)

4. keyboard命令
一般使用在m-files里面,作用就是,当你运行mfiles的程序时,它会在keyboard的位置停下,并 且在命令窗口出现 》K ,这时你可以在命令窗口 中输入命令,可以测试软件已经运行的程序( keyboard以上的程序),或者可以改变已运行程 keyboard 序所得到的变量!你可以在workspace里面观察变 量的变化!当你调试好了以后,在》K后面输入 return,程序就会接着刚才的继续运行(就是运 行keyboard以后的程序。 其实keyboard就是调试 程序时候用的,比较常用的还有pause,但pause 不可以改变已运行程序得出变量

例 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; keyboard; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(x);

注:与pause比较一下。

5. error命令
调用格式为: error(‘字符串’)

6. warning命令
调用格式为: warning(‘字符串’)

上例程序 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; if(d<0) error(‘input error!’); end x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];

注:与warning比较一下。

第三节 函数调用和参数传递
一、函数调用
函数调用的一般格式是: [输出实参表]=函数名(输入实参表)

例 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之 间的转换。 %函数文件tran.m: function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); %调用tran.m的命令文件main1.m: x=input('Please input x=:'); y=input('Please input y=:'); [rho,the]=tran(x,y); rho the

二、函数所传递参数的可调性
在调用函数时,MATLAB用两个永久变量nargin 和nargout分别记录调用该函数时的输入实参 和输出实参的个数。只要在函数文件中包含这 两个变量,就可以准确地知道该函数文件被调 用时的输入输出参数个数,从而决定函数如何 进行处理。



nargin用法示例。 函数文件examp.m: function fout=examp(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==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)

三、全局变量和局部变量
全局变量用命令global定义。函数文件的内 部变量是局部的,与其他函数文件及MATLAB工 作空间相互隔离。

例 全局变量应用示例。 先建立函数文件wadd.m,该函数将输入的参数加权相加。

function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)


相关文章:
Matlab控制语句与逻辑运算
Matlab 控制语句与逻辑运算 1:for 循环语句的格式如下: for 循环变量=变量的...第2章(下) MATLAB控制语... 26页 免费 第七讲 matlab语言的语句... 50页...
matlab第七讲、程序设计
第七讲 程序设计 7.1 M文件及分类 7.2 M文件的基本流程 7.3 M文件的控制 7.1 M文件及分类 MATLAB 作为一种高级计算语言,它不仅可以如前几章所介绍的...
matlab第七讲教案
在 C 语言中也有 switch/case 结构。Matlab 和 C 语言的不同之处在于当某一...循环体以 for 语句开始,以 end 语句结束。 ? 循环体的第一行用索引矩阵定义...
MATLAB 语言的基本使用方法
MATLAB 语言的基本使用方法_计算机软件及应用_IT/计算机_专业资料。实验一 MATLAB 语言的基本使用方法 1. 实验目的 1) 了解 MATLAB 程序设计语言的基本特点,熟悉 ...
MATLAB语言及其在控制领域中的应用
附录二 MATLAB 语言及其在控制领域中的应用 MATLAB语言基础 1 MATLAB语言基础 1.1 使用 MATLAB 的窗口环境 MATLAB语言是一种广泛应用于工程计算及数值分析领域的...
chap4 matlab
第七讲 matlab语言的语句控... 50页 免费 MATLAB实例 9页 10财富值 中科院,遥感课件及资料 50页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题...
第七讲 matlab
第七讲 matlab 隐藏>> 第七讲 1. 自控原理 153 页例题,求根轨迹的分离点,...自控原理 178 页不包括 pd 控制器的系统阶跃响应曲线: - >> s1=zpk([],[...
《Matlab语言在电子信息科学中的应用》(2010~2011(一)(张明艳_电科2008))
第 1 页参考书教具 课程名称: Matlab 语言在电子信息科学中的应用 授课班级: ...第六讲 MATLAB 多项式函数及符号计 算 第七讲 MATLAB 在信号与系统中的应 用...
matlab第七讲习题
31页 2财富值 Matlab习题及解答 10页 1财富值 MATLAB的习题 36页 2财富值 MATLAB第七讲 32页 免费喜欢此文档的还喜欢 matlab第六讲习题 6页 2财富值 matlab...
更多相关标签:
matlab控制语句 | c语言9种控制语句 | c语言控制语句 | c语言循环控制语句 | c语言9个控制语句 | c语言的9种控制语句 | c语言流程控制语句 | matlab if else语句 |