~第8章M文件程序设计基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
(3). 分支结构——根据一定条件来执行的各条语句 if — else — end语句有3种形式 if 表达式 执行语句
end if 表达式 ——— 是
语句1 else ———— 否
语句2
end
16
if 表达式1 ——— 多分支
语句1
例 对输入的字符:大写字母->小
elseif 表达式2
5
m文件的创建
❖ m文件的类型是普通的文本文件,我们可以 使用系统认可的文本文件编辑器来建立m文件。 如windows的记事本和word等。
❖ 具体的创建方法: 在matlab命令窗 口点击 File 菜单 new m-file
6
二、matlab文件的类型
1. 数据文件(包括.mat文件和其他可被接受的 文件类型)
if rem(n,21)~=0
continue
end
break
end
n
20
例 分别建立命令文件和函数文件,将华氏温度f转换为 摄氏温度c。
函数文件f2c.m2:
命令文件f2c.m :
function c=f2c(f)
clear; %清除工作空间中的变量
f=input('Input F’s temperature:'); c=5*(f-32)/9
P192
7
2. m文件
m文件的语法类似于c语言,但又有其自身特 点。它只是一个简单的ASCII码文本文件,执 行程序时逐行解释运行程序,matlab是解释 性的编程语言。
m文件有两类独立的m文件 — 称命令文件
可调用m文件 — 称函数文件
(1). 命令文件 — 简单的m文件
命令文件实际上是一串指令的集合,与在命
c=
21.1111
x=
21.1111
21
例 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%CIRCLE calculate the area and perimeter of a circle of radii r
%r 圆半径 %s 圆面积 %p 圆周长 %2009年7月30日编
第8章 matlab的程序设计
—— matlab语言称为第四 代编程语言,程序简洁、可 读性很强而且调试十分容易。 是matlab重要组成部分。
1
m文件简介
❖ 用户如想灵活应用matlab去解决实际问题, 充分调用matlab的科学技术资源,就需要编 辑m文件
❖ 包含matlab语言代码的文件称为m文件,其 扩展名为m。
❖ 命令行方式程序可读性差,而且不能存储,对复杂 的问题,应编写成能存储的程序文件。
4
❖ m文件模式
将matlab语句构成的程序存储成以m为扩展 名的文件,然后再执行该程序文件,这种工 作模式称为程序文件模式。
程序文件不能在指令窗口下建立,因为指令 窗口只允许一次执行一行上的一个或几个语 句。
❖ mat文件是matlab以标准二进制格式保存的 数据文件,可将工作空间中有用的数据变 量保存下来。
❖ mat文件的生成和调用是由函数save和load 完成的,也可用数据输入向导来导入文件。
save —— save data —— save data a b ——
load —— load data —— load data a b ——
3
例如: x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 =
0 1 2 3 4 5 6 7 8 9 10 x2 =
0369 x3 =
11.5000 8.5000 5.5000 2.5000
❖ 在matlab窗口输入数据和命令进行计算时,当处理 复杂问题和大量数据时是不方便的,因此应编辑m 文件。
BETA=0.3;
11
s=wadd(1,2)
三、matlab的程序结构
matlab语言的程序结构与其它高级语言是一 致的,分为顺序结构,循环结构,分支结构。 (1).顺序结构 —— 依次顺序执行程序的各条语句 (2).循环结构 —— 被重复执行的一组语句,循环 是计算机解决问题的主要手段。 循环语句主要有:
try
C=A*B;
catch
C=A.*B;
end
C lasterr
%显示出错原因19
(5). break语句和continue语句
❖ break语句用于终止循环的执行 ❖ continue语句控制跳过循环体中的某些语句
例 求[100,200]之间第一个能被21 整除的整数。
for n=100:200
end 18
(4).检测语句try-catch
语句格式为:
try 语句组1
catch 语句组2
end
try语句先试探性执行语句 组1,如果语句组1在执行 时出现错误,则将错误信 息赋给保留的lasterr变量, 并转去执行语句组2
例 判断出错原因
A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12];
24
例 编写一个函数文件,求Fibonacci数组中第一 个大于整数n 的元素及序号。
定义函数文件f0: function f0(n) a(1)=1;a(2)=1;i=2; while a(i)<= n
a(i+1)=a(i-1)+a(i);wenku.baidu.com=i+1; end i,a(i)
调用时在命令窗口输入: f0(10000)
26
❖ echo对于命令文件|函数文件有所不同,命 令文件用法简单,函数对所有命令起作用; 函数文件用法较复杂,具体请help查询。
echo file on — 打开file函数文件的显示方式 echo file off — 关闭file函数文件的显示方式 echo file — 切换file函数文件的显示方式 echo on all — 打开所有函数文件的显示方式 echo off all —关闭所有函数文件的显示方式
次数。
语法为:while 表达式 循环体语句
end 表达式一般是由逻辑运算和关系运算以及一 般运算组成的,以判断循环的进行和停止; 只要表达式的值 非0,继续循环;直到表达式 值为0,循环停止。
14
例:用while循环求1~100间整数的和 sum=0; i=1; while i<=100 sum=sum+i; i=i+1; end sum sum = 5050
…… case 表达式m
语句组m
otherwise 语句组n
end
例: switch input_num
case -1 disp('negative one');
case 0 disp('zero');
case 1 disp('positive one');
otherwise disp('other value');
令窗口逐行执行文件中的所有指令,其结果
是一样的,没有输入输出参数。
8
❖ 命令文件包括两部分:注释部分和程序部分
%RANK Number of linearly independent rows or columns. % K = RANK(X) is the number of singular values of X % that are larger than MAX(SIZE(X)) * NORM(X) * EPS. % K = RANK(X,tol) is the number of singular values of X that % are larger than tol.
4. 也可因需要定义全局变量,使用global命令:
global 变量名(习惯上用大写字母以示区分)
例如:函数文件wadd.m: function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y;
在命令窗口中输入:
global ALPHA BETA
ALPHA=0.7;
27
❖ input —— 提示用户从键盘输入数值、字符串、 表达式。 例:n=input('How many apples= ')
How many apples= 5
n=
5 ❖ pause —— 暂停,等待用户响应
可令m文件执行暂停,并在继续执行前按任 一个键 ,若要强行中止程序的运行可使用 Ctrl+C命令。
❖ 编辑m文件可使用各种文本编辑器。
2
一、matlab的工作模式
❖ 指令驱动模式
通常matlab以指令驱动模式工作,即在 matlab 窗口下当用户输入单行指令时, matlab 立即处理这条指令,并显示结果,这 就是matlab命令行方式。 命令行操作时,matlab窗口只允许一次执行 一行上的一个或几个语句。
disp(setstr(abs(c)- 32));
else 语句n
elseif c>='0'& c<='9' disp(abs(c)-abs('0'));
else
end
disp(c); end
17
④ switch-case-end语句
switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2
函数可以嵌套调用,即一个函数可以调用别的函数,甚 至调用它自身。一个函数调用它自身称为函数的递归调用。23
例 利用函数的递归调用,求n!
递归调用函数文件factor.m如下: function f=factor(n) if n<=1
f=1; else
f=factor(n-1)*n; %递归调用求(n-1)! end
12
for — end
for i = 表达式 (表达式为一个向量) 可执行语句
end
例:利用for循环求1!+2!+3!+ +5!的值
sum=0;
for i=1:5
pdr=1; for k=1:i pdr=pdr*k;
sum = 153
end
sum=sum+pdr;
end
13
while — end 循环 while循环将循环体中的语句循环执行不定
s=pi*r*r; p=2*pi*r;
22
例 利用函数文件,实现直角坐标(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
s = svd(x);
if (nargin == 1) tol = max(size(x)) * max(s) * eps;
程序部分
end
r = sum(s > tol);
9
(2). 函数m文件— 需要输入变量,返回输出变量
❖ matlab用户可以根据需要编辑自己的m文件,它们 可以像库函数一样方便的调用,从而极大地扩展了 matlab 的能力。
写字母, 小写字母->大写字母,数字 字符->对应数值,其他字符原样输出
语dis句p(输2出项):
输出项既可以为字
elsei符f 串表,也达可式以3为矩 语阵。句3 ···
c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+32)); elseif c>='a'& c<='z'
函数m文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段
10
特定规则:
1. 函数m文件第一行必须以单词function作为引导词, 必须遵循如下形式:
function <因变量>=<函数名>(<自变量>)
2. m文件的文件名必须是<函数名> .m。
3. 程序中的变量均为局部变量,不保存在工作空间中, 其变量只在函数运行期间有效。
c=5*(f-32)/9
在命令窗口调用该函数文件: >> clear; >>y=input('Input F’s temperature:');
在命令窗口中输入文件名: >>f2c %将会执行该文件 Input F’s temperature:73
c=
22.7778
>>x=f2c(y) Input F’s temperature:70
25
四、matlab程序流的控制
matlab的控制语句同c语言有相似之处, 但没 有c 语言复杂、灵活和多变。因而语法比较简 单,容易掌握。
❖ echo 指令— 用来控制m文件在执行过程中是否显示 echo on — 打开所有命令文件的显示方式 echo off — 关闭所有命令文件的显示方式 echo — 在以上两者间切换
相关文档
最新文档