第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。

Slides:



Advertisements
Similar presentations
10.2.switch语句.
Advertisements

第3章 MATLAB程序设计 3.1 M文件 3.2 程序控制结构 3.3 函数文件 3.4 程序举例 3.5 程序调试
第七节 Matlab的程序设计 —— Matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易,是Matlab的重要组成部分。
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
Matlab及其应用 鲍文 哈尔滨工业大学 先进动力控制与可靠性研究所
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
Hadoop I/O By ShiChaojie.
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
走进编程 程序的顺序结构(二).
辅导课程六.
第五讲  Matlab的程序设计 —— Matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易, 是Matlab重要组成部分。要充分体现和发挥Matlab的能力,必 须掌握Matlab程序设计.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第4章 MATLAB文件操作 4.1 文件的打开与关闭 4.2 文件的读写操作 4.3 数据文件定位.
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
第一章 函数 函数 — 研究对象—第一章 分析基础 极限 — 研究方法—第二章 连续 — 研究桥梁—第二章.
第二章 Java语言基础.
数学软件 西南科技大学网络教育系列课程 数学软件 第10讲 MATLAB程序设计 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
MATLAB介绍 Matlab基本命令介绍 Matlab矩阵运算 Matlab控制流 Matlab图像处理工具箱 实习题讲解.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第一章 函数与极限.
第2章 MATLAB程序设计 编者.
第4章 PHP流程控制语句.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第二单元 第2课 Matlab程序控制结构 1.顺序结构 2.选择结构 3.循环结构.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
第二讲 MATLAB程序设计.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
项目二:HTML语言基础.
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
第二章 Java基本语法 讲师:复凡.
2.2矩阵的代数运算.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
第三讲文件操作.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
数据表示 第 2 讲.
第二单元 第3课 Matlab命令执行方式 1.Matlab命令执行方式 2.程序调试.
第四章 UNIX文件系统.
第三讲 程序设计准备知识 一、程序编辑器.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
顺序结构程序设计 ——关于“字符串”和数值.
1.4 M文件与程序设计 文件的操作 命令文件 M函数文件 程序设计语句.
数学是知识的工具,亦是其它知识工具的泉源。 ——勒内·笛卡尔
Presentation transcript:

第七节 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。

m文件简介 用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件 包含matlab语言代码的文件称为m文件,其扩展名为m。 编辑m文件可使用各种文本编辑器。

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

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

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 = 0 3 6 9 x3 = 11.5000 8.5000 5.5000 2.5000 在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。

m文件模式 命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。 将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。

二、m文件的创建 m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。 具体的创建方法: 在matlab命令窗 口点击file 菜单 new  m-file 2 edit

2. 点击file — Save Workspace As 将工作空间中的内容存入文件。 3. !edit —— 用dos 下edit 编辑器编制m文件。 4. edit —— 用matlab自带的编辑器编制m文件。 5. word —— 用word编辑m文件。 m文件编辑器的设定 m文件编辑器可自己设定,设定方法是matlab命令窗口 options 菜单下点击 Edit Preference 选定m文件编辑器。

m文件编辑器缺省设置是 c:\windows\notepad.exe 还可设成:c:\windows\write.exe c:\windows\command\edit.com c:\program file\office\winword.exe 注意:所创建的m文件必须纳入matlab搜索路 径后,才能在matlab命令窗口运行。

matlab搜索路径的设置 matlab 缺省路径是c:\matlab\bin 1. cd c:\myfile 2. path(path,'c:\myfile') 3. 打开matlabrc.m文件,将c:\myfile加上即可。 4. 用pathtool路径浏览器设定当前目录。

三、matlab文件的类型 数据文件 .mat mat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。 mat文件的生成和调用是由函数save和load完成的。 例如:load gatlin image(X)

colormap(gray);axis equal; axis('off')

命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。 2. m文件 m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。 m文件有两类独立的m文件 — 称命令文件 可调用m文件 — 称函数文件 (1). 命令文件 — 简单的m文件 命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。

命令文件包括两部分:注释文件和程序文件 %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. % Copyright (c) 1984-94 by The MathWorks, Inc. s = svd(x); if (nargin == 1) tol = max(size(x)) * max(s) * eps; end r = sum(s > tol); 程序部分

[X,Y,Z]=peaks(30); surf(X,Y,Z) axis([-3,3,-3,3,-10,10]) axis off; shading interp; colormap(hot); m=moviein(20); %建立一个20列大矩阵 for i=1:20 view(-37.5+24*(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次

[x,y]=meshgrid(-5:0.1:5); z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4); surf(x,y,z);shading interp; pause %程序暂停 i=find(x<=0&y<=0); z1=z;z1(i)=NaN; surf(x,y,z1);shading interp;

(2).matlab内置函数文件 matlab自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。 例如:sin.m函数——用type sin查不到。 调用格式:y=sin(2*x) 实际应用中: x=0:2*pi/180:2*pi; y=sin(2*x) plot(x,y)

(3). 函数m文件— 需要输入变量,返回输出变量 又如 sqrt(x) —— 求x的平方根 abs(x)—— 求x的绝对值 det(a)—— 求行列式的值 等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。 (3). 函数m文件— 需要输入变量,返回输出变量 matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。

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

函数m文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段 特定规则: 函数m文件第一行必须以单词function作为引导词,必须遵循如下形式: function <因变量>=<函数名>(<自变量>) m文件的文件名必须是<函数名> .m。 程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。

(4). 系统文件——s函数 用于描述系统运动的专用函数,是特殊的 m 文件。 s 函数有3类:  由simulink结构图自动创建  可用c语言程序设计mex文件直 接定义  用函数m文件编写 s函数一旦创建,即可在框图中使用,也可在文件中调用。

[sys, x0]=sfunction( t, x, u, flag) S函数与函数m文件类似,只是输入、输出变量是限定的。 用户定义的系统 当前输入值 状态初值 系统状态 当前时刻 标志量 当前状态值

M文件与函数之间可以互相调用 函数必须遵循以下特定的规则。 1. 函数名和文件名必须相同。例如,函数fliplr 存储在名为fliplr.m 文件中。 2. MATLAB头一次执行一个M文件函数时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。 3. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如, » help fliplr返回上述前八行注释。

4. 第一行帮助行,名为H1 行,是由lookfor 命令搜索的行。 5. 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。 6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。 7. 当函数有一个以上输出变量时,输出变量包含在括号内。例如,[V,D] = eig(A)。不要把这个句法与等号右边的[V,D] 相混淆。右边的[V,D] 是由数组V和D 所组成。 8. 当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。

计算f(1)f(2)+f2(3) 首先建立一个M函数:fun1.m function Y= fun1(x) Y=(x^3 - 2*x^2 + x - 6.3)/(x^2 + 0.05*x - 3.14); 在命令窗口键入: fun1(1)*fun1(2)+fun1(3)*fun1(3)

function output = fact(n) 例:计算阶乘函数 fact.m function output = fact(n) if n == 1 output = 1; return; end output = n*fact(n-1);

[circle.m] function sa = circle(r,s) %CIRCLE plot a circle of radii r in the line specified by s. % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 % % circle(r) 利用蓝实线画半径为 r 的圆周线. % circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线. % sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面. % sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.

if nargin>2 error('输入宗量太多'); end; if nargin==1 s='b'; clf; t=0:pi/100:2*pi; x=r*exp(i*t); if nargout==0 plot(x,s); else sa=pi*r*r; fill(real(x),imag(x),s) end axis('square')

全局变量与局部变量 全局变量用global命令定义,格式为: global 变量名 例: 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: ALPHA=1; BETA=2; s=wadd(1,2)

(4). 函数句柄 函数句柄是matlab6特有的语言结构,其优点: 方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据

函数句柄的创建和显示 定义函数句柄的定义只需在提示符@后添加相应函数的函数名 f_h=@plot f_h = @plot 函数句柄的内容通过functions显示 functions(f_h) ans = function: 'plot' type: 'overloaded' file: 'MATLAB built-in function' methods: [1x1 struct]

matlab的函数类型 simple —— 未加载的内部函数、m文件 overloaded ——加载的内部函数、m文件 subfunction —— 子函数 constructor —— matlab类的创建函数 private —— 局部函数

函数句柄的调用和操作 可通过函数feval进行函数句柄的调用 feval(函数句柄) f_h1=@peaks feval(f_h1) f_h=@plot feval(f_h,0:10,0:10)

函数句柄与函数名字符串转换 func2str —— 函数名字符串转换函数句柄 funh=str2func('det') funh = @det str2func —— 函数句柄转换函数名字符串 func2str(funh) ans = det

程序调试 1 程序调试概述 一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等。 程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。

2 调试器 1.Debug菜单项 该菜单项用于程序调试,需要与Breakpoints菜单项配合使用。 2.Breakpoints菜单项 该菜单项共有6个菜单命令,前两个是用于在程序中设置和清除断点的,后4个是设置停止条件的,用于临时停止M文件的执行,并给用户一个检查局部变量的机会,相当于在M文件指定的行号前加入了一个keyboard命令。

3 调试命令 除了采用调试器调试程序外,MATLAB还提供了一些命令用于程序调试。命令的功能和调试器菜单命令类似,具体使用方法请读者查询MATLAB帮助文档。

四、matlab的程序结构 (1).顺序结构 —— 依次顺序执行程序的各条语句 (2).循环结构 —— 被重复执行的一组语句,循环是计算机解决问题的主要手段。 循环语句主要有:  for — end

sum = 153 语法为: for i = 表达式 (表达式为一个向量) 可执行语句 end pdr=1; for k=1:i pdr=pdr*k; sum=sum+pdr; sum = 153

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

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

break语句和continue语句 与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。

求[100,200]之间第一个能被21整除的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break n

(3). 分支结构——根据一定条件来执行的各条语 句。 if — else — end语句有3种形式  if 表达式 执行语句 end  if 表达式 ——— 是 语句1 else ———— 否 语句2

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

例3-5 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)- abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end

switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end

switch-case结构 【例】学生的成绩管理,用来演示switch结构的应用。 %划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。

N = input('输入分数'); switch N case 100 %得分为100时 S ='满分'; %列为'满分'等级 case 90 %得分在90和99之间 S =' 优秀'; %列为'优秀'等级 case 80 %得分在80和89之间 S =' 良好'; %列为'良好'等级 case 60 %得分在60和79之间 S =' 及格'; %列为'及格'等级 otherwise %得分低于60。 S ='不及格'; %列为'不及格'等级 end disp(S)

例3-6 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): 输入所售商品的价格,求其实际销售价格。

price=input('请输入商品价格'); switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格

try语句 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2

矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: 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 %显示出错原因

try-catch结构 【例】try-catch结构应用实例。 clear,N=4;A=magic(3); %设置3行3列矩阵A。 try A_N=A(N,:), %取A的第N行元素 catch A_end=A(end,:), %如取A(N,:)出错,则改A的最后一行。 end lasterr %显示出错原因

a=2;b=2; x=-a:0.2:a;y=-b:0.2:b; for i=1:length(y) for j=1:length(x) if x(j)+y(i)>1 z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j)); elseif x(j)+y(i)<=-1 z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j)); else z(i,j)=0.7575*exp(-y(i)^2-6.*x(j)^2); end axis([-a,a,-b,b,min(min(z)),max(max(z))]); colormap(flipud(winter)); surf(x,y,z);

%Play the game of guess the number x=fix(100*rand); %a random number calculated by the computer n=7;test=1; for k=1:7 numb=int2str(n); disp(['You have a right to ',numb,' guesses']) disp(['A guess is a number between 0 and 100']) guess=input('Enter your guess:');

if guess<x disp('Low') elseif guess>x disp('High') else disp('You won') test=0; break; end n=n-1; if test==1 disp('You lost')

关系操作符 >, < ,<=, >=, = =, ~= 等 逻辑操作符 &,| , ~等 在条件表达式中,通常都是由 关系操作符 >, < ,<=, >=, = =, ~= 等 逻辑操作符 &,| , ~等 逻辑函数:isequal —— 若是相等则为真 isempty ——若是空矩阵则为真 isstr —— 若是字符串则为真 例:编写m函数,计算函数值 x (x<1) 2x-1 (1<x<10) 3x-11 (x>=10)

五、matlab程序流的控制 echo 指令— 用来控制m文件在执行过程中是否 显示 echo on — 打开所有命令文件的显示方式 matlab的控制语句同c语言有相似之处, 但没有c 语言复杂、灵活和多变。因而语法比较简单,容易掌握。 echo 指令— 用来控制m文件在执行过程中是否 显示 echo on — 打开所有命令文件的显示方式 echo off — 关闭所有命令文件的显示方式 echo — 在以上两者间切换

echo file on — 打开file函数文件的显示方式 echo file off — 关闭file函数文件的显示方式 echo对于命令文件函数文件有所不同,命令文件用法简单,函数对所有命令起作用;函数文件用法较复杂,具体请help查询。 echo file on — 打开file函数文件的显示方式 echo file off — 关闭file函数文件的显示方式 echo file — 切换file函数文件的显示方式 echo on all — 打开所有函数文件的显示方式 echo off all —关闭所有函数文件的显示方式

input —— 提示用户从键盘输入数值、字符串、表达式。 例:n=input('How many apples= ') How many apples= 5 n = 5 pause —— 暂停,等待用户响应 可令m文件执行暂停,并在继续执行前按任一个键 。

keyboard —— 与input类似,功能更强 keyboard 调用键盘与调用m文件一样,当keyboard在m文件中出现时,它停止文件的执行并控制键盘,用于修改程序。 break —— 中断 break 中断for, while循环语句的执行,在嵌套循环结构中, break进从最里层循环推出。 menu —— 产生一个拥护可选择输入的菜单 格式:k=menu( ‘标题’,‘菜单1’,‘菜单2’ …)

六、文件操作 打开和关闭文件(fopen, fclose) 格式:fid=fopen(‘数据文件’,‘r’) ‘r’ —— 读 matlab文件输入、输出(I/O)函数允许把其它格式的数据文件直接读进matlab,它是以c语言文件I/O函数为基础的。 打开和关闭文件(fopen, fclose) 格式:fid=fopen(‘数据文件’,‘r’) ‘r’ —— 读 ‘w’ —— 写 ‘a’ —— 附加 ‘rt’ —— 读写

文件一旦打开,即可进行读写操作。 sta=fclose(fid) —— 关闭上述打开文件 sta=fclose(all) —— 关闭所有打开的文件 与save,load类似,是matlab专用数据文件读写工具(*.mat)。 2. 读写二进制数据文件 fread, fwrite —— 可读写数据文件,文本文件。 例:fid=fopen(‘user.dat’,’r’) a=fread(fid,50) sta=fclose(fid)

七、应用程序接口 应用程序接口——是matlaab的附加组件。是一个 由相关函数组成的接口函数库,可实现与外部程 序的交互。 MEX文件:是matlab环境下调用C、FORTRAN 语言编写的应用程序模块。 matlab 计算引擎:在使用C、FORTRAN编程时 可调用matlab函数库进行计算。 MAT文件:实现matlab与C、FORTRAN语言程序间的 数据交换

八、matlab编译 matlab编译的原因: 1. 提高运算速度 2. 隐藏特定算法 3. 可产生独立的m文件 matlab编译函数:mcc MCC [-options] fun [fun2 ...] [mexfile1 ...] [mlibfile1 ...]

例1: x=0:pi/100:2*pi; y=2*sin(5*x).*sin(x); hl=plot(x,y); hc=uicontextmenu; %建立快捷菜单 hls=uimenu(hc,'Label','线型'); %建立菜单项 hlw=uimenu(hc,'Label','线宽'); uimenu(hls,'Label','虚线','Call','set(hl,''LineStyle'','':'');'); uimenu(hls,'Label','实线','Call','set(hl,''LineStyle'',''-'');');

例2 hf=figure('Color',[0,1,1],'Position',[100,200,400,200],... 'Name','数制转换','NumberTitle','off','MenuBar','none'); uicontrol(hf,'Style','Text', 'Units','normalized',... 'Position',[0.05,0.8,0.45,0.1],'Horizontal','center',... 'String','输 入 框','Back',[0,1,1]); uicontrol(hf,'Style','Text','Position',[0.5,0.8,0.45,0.1],... 'Units','normalized','Horizontal','center',... 'String','输 出 框','Back',[0,1,1]);

uicontrol(hf,'Style','Edit','Position',[0.25,0.4,0.2,0.1],... 'Units','normalized','Back',[0,1,0]); uicontrol(hf,'Style','Frame','Position',[0.52,0.33,0.45,0.45],... 'Units','normalized','Back',[1,1,0]); ht=uicontrol(hf,'Style','Text','Position',[0.6,0.5,0.3,0.1],... 'Units','normalized','Horizontal','center','Back',[0,1,0]); COMM=['n=str2num(get(he1,''String''));',... 'b=str2num(get(he2,''String''));',... 'dec=trdec(n,b);','set(ht,''string'',dec);']; uicontrol(hf,'Style','Push','Position',[0.18,0.1,0.2,0.12],... 'String','转 换','Units','normalized','Call',COMM); uicontrol(hf,'Style','Push','Position',[0.65,0.1,0.2,0.12],... 'String','退 出','Units','normalized','Call','close(hf)');

MATLAB文件操作 1 文件的打开与关闭 2 文件的读写操作 3 数据文件定位

1 文件的打开与关闭 文件的打开 fopen函数的调用格式为: fid= fopen(文件名,打开方式) 其中文件名用字符串形式,表示待打开的数据文件。常见的打开方式有:‘r’表示对打开的文件读数据,‘w’表示对打开的文件写数据,‘a’表示在打开的文件末尾添加数据。 fid用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数据文件进行操作。

文件数据格式有两种形式,一是二进制文件,二是文本文件。在打开文件时需要进一步指定文件格式类型,即指定是二进制文件还是文本文件。

2 文件的关闭 文件在进行完读、写等操作后,应及时关闭。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1。

文件的读写操作 二进制文件的读写操作 1.读二进制文件 fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size, precision) 其中A用于存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:

(1) N表示读取 N个元素到一个列向量。 (2) Inf表示读取整个文件。 (3) [M,N]表示读数据到M×N的矩阵中,数据按列存放。 precision代表读写数据的类型

2.写二进制文件 fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite (fid, A, precision) 其中COUNT返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。

例1 建立一数据文件magic5. dat,用于存放5阶魔方阵。 程序如下: fid=fopen(‘magic5 例1 建立一数据文件magic5.dat,用于存放5阶魔方阵。 程序如下: fid=fopen(‘magic5.dat’,‘w’); cnt=fwrite(fid,magic(5),‘int32’); fclose(fid);

2 文本文件的读写操作 1.读文本文件 fscanf 函数的调用格式为: [A,COUNT]= fscanf (fid, format, size) 其中A用以存放读取的数据,COUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有d,f,c,s。 size为可选项,决定矩阵A中数据的排列形式。

2.写文本文件 fprintf 函数的调用格式为: COUNT= fprintf(fid, format, A) 其中A存放要写入文件的数据。先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。

3 数据文件定位 MATLAB提供了与文件定位操作有关的函数fseek和ftell。fseek函数用于定位文件位置指针,其调用格式为: status=fseek(fid, offset, origin) 其中fid为文件句柄,offset表示位置指针相对移动的字节数,origin表示位置指针移动的参照位置。若定位成功,status返回值为0,否则返回值为–1。

ftell函数返回文件指针的当前位置,其调用格式为: position=ftell (fid) 返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。