第四章matlab程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 Matlab 程序设计
m文件的建立 命令操作:在MATLAB命令窗口输入命令edit 菜单操作
第四章 Matlab 程序设计
1 脚本文件 脚本文件既不接受输入参数也不返回输出参数,脚 本文件实际上是一串指令的集合,与在命令窗口逐行执 行文件中的所有指令,其结果是一样的。
脚本文件包括两部分:注释部分和程序部分
end
break end n
第四章 Matlab 程序设计
1 文件的打开与关闭
(1) 文件的打开
格式
说明:
fid= fopen(文件名,打开方式)
1. 其中文件名用字符串形式,表示待打开的文件。
2. 常见的打开方式有:′r′表示对打开的文件读数据;′r+′表示读写;′w′删除已 经存在的文件内容或建立一个新文件,并打开文件写;′w+′删除已经存在的
第四章 Matlab 程序设计
(2)文本文件的读写操作 读文本文件 格式 A= fscanf (fid, format) [A,COUNT]= fscanf (fid, format, size) 说明: 1. A用以存放读取的数据。
2. COUNT返回所读取的数据元素个数。fid为文件句柄。
3. format用以控制读取的数据格式,由%加上格式符组成,常 见的格式符有%d,%f,%e,%c,%s等。 4. size为可选项,决定矩阵A中数据的排列形式。
函数文件是指能够接受并输出参数的m文件。 函数文件的格式: function 输出形参表=函数名(输入形参表) 注释说明语句段 程序语句段
说明: 1. 函数m文件第一行必须以单词function作为引导词。 2. 函数文件的文件命名规则与变量相同,且必须是函数名 .m。 3. 当输出形参多于一个时,须用方括号括起来,以矩阵形式表示。 4. 程序中的变量均为局部变量,不保存在工作空间中。其变量只 在函数运行期间有效。
文件内容或建立一个新文件,读写;′a′表示在打开的文件末尾添加数据。
3. fid用于存储文件句柄值,句柄值用来标识该数据文件,其它函数可以利用 它对该数据文件进行操作。
第四章 Matlab 程序设计
(2)文件的关闭
格式
sta=fclose(fid)
说明:
该函数关闭fid所表示的文件。sta表示关闭文件操 作的返回代码,若关闭成功,返回0,否则返回–1。
第四章 Matlab 程序设计
2 m文件模式 m文件是matlab所特有的使用该语言编写的磁盘文 件。 将matlab语句构成的程序存储成以m为扩展名的文 件,然后再执行该程序文件,这种工作模式称为程序文 件模式。
程序文件不能在指令窗口下建立,因为指令窗口只允 许一次执行一行上的一个或ห้องสมุดไป่ตู้个语句。
第四章 Matlab 程序设计
plot(t,y(:,2)) fwrite(fid1,y,′float′) fclose(fid1) save example.dat y -ASCII
第四章 Matlab 程序设计
例4.2 求圆的周长和面积
peri_area.m
function [l s]=peri_area(r) %计算圆的周长和面积 l=2*pi*r; %周长 s=pi*r.^2; %面积
只有一句注释时
有多句注释时
第四章 Matlab 程序设计
4.2 Matlab的程序结构
m文件有两类 1.脚本文件(Script File) : 独立的m文件 2.函数文件(Function File): 可调用的m文件
脚本文件是一串matlab命令的集合,完成制定的功能,变量空间是 workspace; 函数文件是一个黑箱,根据输入作出输出,变量空间是独立的函数变量空间, 在函数运行完成后关闭。
第四章 Matlab 程序设计
(2) 数据的输出 disp 函数
调用格式
disp(输出项)
说明: 1. 输出项可以是变量或字符串。 2. 输出变量时,不显示变量名。
第四章 Matlab 程序设计
sprintf 函数:字符串格式化命令 主要功能是把格式化的数据写入某个字符串中
调用格式
S=sprintf(格式,输出项)
例4.1 绘制sin(x)*cos(x)图形
a.m
%绘制sin(x)*cos(x)图形 x=0:0.1:4*pi; y=sin(x).*cos(x); plot(x,y)
%注释部分,用以说明函数的作用及 有关内容,使用help命令时显示。只 显示程序中的第一句注释语
第四章 Matlab 程序设计
2 函数文件
控制跳过循环体中的某些语句。当在循环体内执行 到该语句时,程序将跳过循环体中所有剩下的语句,继 续下一次循环。
第四章 Matlab 程序设计
例4.4 求[100,200]之间第一个能被21整除的整数。 %计算100~200之间第一个能被21整除的整数 for n=100:200 if rem(n,21)~=0 continue %rem(x,y) :计算x./y的余数
说明: 1. 输出格式控制同c语言 2. 输出项可以是变量或表达式
x=pi;m=2; sprintf('x1=%f x2=%4.3f\n x3=%10.9f', (1+sqrt(5))/2,x,pi) sprintf(‘%d’,round(x)) %舍为最接近的整数 sprintf('%s','hello') S=sprintf('The array is %dx%d.',m,3) ; disp(S)
第四章 Matlab 程序设计
写文本文件
格式
COUNT= fprintf(fid, format, A)
说明:
1. A存放要写入文件的数据。
2. 先按format指定的格式将数据矩阵A格式化,然后写入 到fid所指定的文件。格式符与fscanf函数相同。
第四章 Matlab 程序设计
例4.5 文件的操作
第四章 Matlab 程序设计
3 循环结构
(1) for语句
格式
for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 说明: 1. 表达式1的值为循环变量的初值,表达式2的值为步长,表 达式3的值为循环变量的终值。 2. 步长为1时,表达式2可以省略。
第四章 Matlab 程序设计
格式 [A,COUNT]=fread(fid,size, precision)
第四章 Matlab 程序设计
写二进制文件
格式
COUNT=fwrite (fid, A, precision)
说明: 1. COUNT返回所写的数据元素个数。 2. fid为文件句柄。 3. A用来存放写入文件的数据,
4. precision用于控制所写数据的类型,其形式与fread函数相同。
第四章 Matlab 程序设计
2 文件的读写操作
文件数据格式有两种形式,一是二进制文件,二是文本文件。对不 同类型的文件读写是不同的。
(1)二进制文件的读写操作
读二进制文件 说明:
1. A用于存放读取的数据。
2. COUNT返回所读取的数据元素个数 3. fid为文件句柄 4. precision代表读写数据的类型:′int′ ′float′ ′char′等 5. size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列 值: (1) N表示读取 N个元素到一个列向量。 (2) [M,N]表示读数据到M×N的矩阵中,数据按列存放。
格式
b 双分支if语句:
格式
if 条件 语句组 end
if 条件 语句组1 else 语句组2 end
第四章 Matlab 程序设计
2 选择结构
(1) if语句 c 多分支if语句
格式
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end
(2) while语句
格式 while (条件) 循环体语句 end
说明: 若条件成立,则执行循环体语句,执行后再判断 条件是否成立,如果不成立则跳出循环。
第四章 Matlab 程序设计
(3) break和continue语句 break语句: 用于终止循环的执行。当在循环体内执行到该语句
时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句:
第四章 Matlab 程序设计
(3) 程序的暂停 pause 函数
调用格式
pause(延迟秒数)
说明: 1. 如果省略延迟时间,直接使用pause,则将暂停程序, 直到用户按任一键后程序继续执行。 2. 若要强行中止程序的运行可使用Ctrl+C命令。
第四章 Matlab 程序设计
2 选择结构
(1) if语句 a 单分支if语句:
clear x=0:0.1:2*pi; fid=fopen(′example.mat′,′wb+′) count=fwrite(fid,x,′float′) fclose(fid) fid1=fopen(′example.mat′,′rb+′) t=fread(fid1,′float′);
y=[t,sin(t)];
第四章 Matlab 程序设计
例4.3 求一元二次方程ax^2 +bx+c=0的根。 %解一元二次方程 %a b c方程系数 %x1 x2为方程的根 disp('pls input a b c') a=input('a='); b=input('b='); c=input('c='); d=b*b-4*a*c; x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); disp('x1 x2 is') disp([x1,x2]) disp(sprintf('x1=%8.5f\nx2=%8.5f',x1,x2))
matlab的程序结构与c语言相似,主要有以下三 种基本结构 1.顺序结构 2.选择结构
3.循环结构
第四章 Matlab 程序设计
1 顺序结构
(1) 数据的输入 input 函数
调用格式
a=input(′提示信息′, ′选项′)
说明:选项用于控制输入数据格式,′s′允许输入字符串。 除了字符串输入需加‘s’,其余一概不需要加
4.1 M文件
m文件的语法类似于c语言,但又有其自身特点。它 只是一个简单的ASCII码文本文件,执行程序时逐行解释 运行程序,matlab是解释性的编程语言。 m文件可以使用系统认可的文本文件编辑器来建立m 文件。如dos下的edit,windows的记事本和word等。常用 且最为方便的是使用MATLAB提供的文本编辑器。
第四章 Matlab 程序设计
(3) try语句
try 语句组1 catch 语句组2 end
说明: try语句先试探性执行语 句组1,如果语句组1在执行
过程中出现错误,则将错误
信息赋给保留的lasterr变量, 并转去执行语句组2。
第四章 Matlab 程序设计
test.m A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C erro=lasterr%显示出错原因
第四章 Matlab 程序设计
主要内容:
4.1 4.2 4.3 4.4 M文件 Matlab的程序结构 Matlab文件操作 Matlab程序设计
第四章 Matlab 程序设计
matlab的工作模式
指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗 口下当用户输入单行指令时,matlab 立即处理这条指 令,并显示结果,这就是matlab命令行模式。 命令行模式操作时,matlab窗口只允许一次执行一 行上的一个或几个语句。 1 在matlab窗口输入数据和命令进行计算时,当处理 复杂问题和大量数据时是不方便的。 命令行方式程序可读性差,而且不能存储,对于复杂 的问题,应编写成能存储的程序文件。
第四章 Matlab 程序设计
(2) switch语句 switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end
说明: 1. 当表达式的值等于表达式1的值 时,执行语句组1。 2. 当表达式的值等于表达式m的值 时,执行语句组m。 3. 当表达式的值不等于case所列的 表达式的值时,执行语句组n。 4. 当任意一个分支的语句执行完后, 直接执行switch语句的下一句。