MATLAB编程基础第11讲--M文件、底层IO命令的数据输入与输出程序优化
Matlab底层文件输入输出

底层文件输入输出(I/O)操作打开文件(1) fid=fopen(filename, permission)由permission指定文件的打开模式Permission='r', 'r+', 'w', 'w+', 'a', 'a+', 'W', 'A''r' read'w' write (create if necessary)'a' append (create if necessary)'r+' read and write (do not create)'w+' truncate(删简) or create for read and write 'a+' read and append (create if necessary)'W' write without automatic flushing(刷新)'A' append without automatic flushing(2) [fid, message]=fopen(filename, permission)打开不成功时返回错误信息(3) [fid, message]=fopen(filename, permission, format) format 用于制定数据格式format=’n’, 本机格式,默认;format=’l’,IEEE浮点格式,little-endian字节顺序; format=’b’,IEEE浮点格式,big-endian字节顺序。
(4) [filename, permission, format]=fopen(fid)(5) fids=fopen('all')返回一个包含所有打开文件的标示符的行向量关闭文件(1) status = fclose(fid)关闭指定的文件。
MATLAB程序设计M文件程序控制结构程序调试程序举例

y=input('Please input y=:');
[rho,the]=tran(x,y);
rho
the MATLAB中,函数能够嵌套调用,即一种函数能够调用别旳函数, 甚至调用它本身。一种函数调用它本身称为函数旳递归调用。
例6 分别建立命令文件和函数文件,将华氏温度f转换为 摄氏温度c。
21.1111
x=
21.1111
(5). 函数文件旳其他有关概念
①局部变量和全局变量:
局部变量只存在于单个函数工作空间,全局变量 经过global定义,可穿行于不同函数工作空间, 涉及基本工作空间workspace。
函数文件旳内部变量是局部旳,与其他函数 及MATLAB内存相互隔离; 而假如在若干函数中把某一变量定义为全局 变量,那么这些函数将公用这个变量,全局 变量旳作用域是整个MATLAB旳工作区,即 全程有效,全部函数都能够对其存取和修改。
if (nargin == 1) tol = max(size(x)) * max(s) * eps;
程序部分
end
r = sum(s > tol);
(2)命令m文件建立及其运营
建立 涉及下列环节: 进入m文件编辑器 输入程序 定义文件名,保存程序
命令M文件旳运营方式: 直接在命令窗口输入该文件旳文件名 在m文件编辑器中打开该文件后点击工具条中
② M文件模式
将matlab语句构成旳程序存储成以m为扩展名 旳文件,然后再执行该程序文件,这种工作模式 称为程序文件模式。
程序文件不能在命令窗口下建立,因为命令窗口 只允许一次执行一行上旳一种或几种语句。
MATLAB编程基础第11讲--M文件、底层IO命令的数据输入与输出程序优化

14
5.4.1 数据的输入
3 使用load命令载入数据: 常用调用格式load filename.mat 例5-20 load文件 Data_B.txt 321 852 963 load Data_B.txt Y=Data_B.^3
15
5.4.2 数据的输出
5.5 程序的优化
1 环向量化 把循环向量化,能缩短程序的长度,提高程 序的执行效率。 2 预定义变量 Matlab将任何一个变量都看成一个矩阵。
23
5.6 面向对象的编程综述
1 类和对象 类是抽象的概念,由对象集合而成。表征着各个对象所共 同具有的数据结构。 isa(),iscell(),ischar()等逻辑判断函数 2 面向对象编程的内涵 充分利用“类”“对象”进行的编程成为面向对象编程。 (1)创建类目录 (2)选定待建类的数据结构 (3)对象构造函数 (4)显示函数 (5)与其他类之间的转换函数
18
5.4.3 文件读写的I/O命令函数
1 fopen 常用调用格式: fn=fopen(‘filename’,’permission’) fopent(‘all’) [filename,permission]=fopen(fn) fopen(‘filename’) (1)filename 要打开的文件名 (2)permission 指定的操作方式,常用的有r,w,a(追加)等。 Rb,wb,ab针对二进制的文件。Rt wt at针对文本格式的文件。 (3)fn 指的是被打开文件的文件代号。如果打开成功为正整数。 否则为-1。 (4)all指列出用于当前已经打开的除标准文件外全部文件的文 件代号。
matlab基本编程

例
程序如下: function iftow(x) if x>0
fprintf(‘%f is a positive number\n’,x) else
fprintf(‘%f is not a positive number\n’,x) end
例 计算分段函数值。
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y
function f = fact(n) %函数的定义行
% Compute a factorial value. %H1行
% FACT(N) returns the factorial of N, %帮助文 本
% usually denoted by N!
% Put simply, FACT(N) is PROD(1:N). %注释
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
disp(c); end
例 输入数n,判断其奇偶性
程序如下: n = input('n='), if rem(n,2)==0 A = ‘even’ else A = ‘odd’ end
3.多分支if语句 语句格式为: if 条件1
语句组1 elseif 条件2
语句组2
…… elseif 条件m
语句组m
else 语句组m+1
MATLAB程序设计函数文件和程序调试

得到具体的值,并参与运算求得函数值。
形参在整个函数体内都可以使用, 离开该函数那么不能
使用。
4
函数M文件介绍
%注释说明局部〔可选〕
第一注释行为大写的函数文件名和函数功能简要描述,供
lookfor和help使用
第一注释行之后为函数输入/输出参数的含义及调用格式
执行,直至下一断点
F5
Go until Cursor
执行至当前光标处
无
Set/Clear Breakpoint
设置或删除断点
F12
Set/Modify Conditional Breakpoint…
设置或修改条件断点
无
Enable/Disable Breakpoint
开启或关闭光标行的断点
无
Clear Breakpoints in All Files
当输出形参多于一个时,用方括号括起来
函数必须是一个单独的M文件, 函数文件名建议与函数名
一致,通常为函数名.m,不一致时以文件名为准。
3
函数M文件介绍
形参
全称为“形式参数〞 由于它不是实际存在变量,所以又
称虚拟变量。形参是在定义函数的时候使用的参数,目的
是用来接收调用该函数时传入的参数。
形参也可以理解为函数的自变量,其初值来源于函数的调
M文本文件介绍
MATLAB编写的程序文件称为M文件,M文件有脚本文
件和函数文件两种。
脚本文件〔 M-script 〕不需要输入参数,也不输出
参数,按照文件中制定的顺序执行命令序列。脚本文件
适合于小规模运算。
函数文件接受其他数据为输入参数,并且可以返回数据。
matlab基础与应用教程课件第11章

y=fscanf(fid,'%5d',[10,10]);
A=fscanf(fid,'%s', [4]);
C=fscanf(fid,'%g %g',[2 inf]);
〔2〕fprintf函数 fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为
【例11.3】假定文件textdemo.txt中有以下格式的数据:
Name English Chinese Mathmatics
Wang
99
98
100
Li
98
89
70
......
此文件第一行为标题行,第2~5行的第1列为字符型,后3列为整型。从 该文件中将前3个数据读入到grades的命令如下:
fid = fopen('textdemo.txt', 'r');
fid=fopen('aaa.dat','w');
〔3〕调用MATLAB函数进展运算
11.2 MATLAB数据接口
MATLAB提供了多种不同层次的数据输入/输出函数。 MATLAB提供多种方法支持将磁盘文件和剪贴板中的数据导入到 MATLAB的工作区,最简单的方法是使用数据导入向导〔可通过选择 “File〞菜单中的“Import data〞命令或在命令窗口执行命令“uiimport 〞来激活它〕,而在M文件中那么可以使用MATLAB输入/输出函数。
〔4〕textscan函数
有格式文件可以使用文本输入函数textscan读取数据。textscan函数调用 格式为
C=textscan(fid, fmt, N , param, value)
matlab教程m文件介绍
一、matlab的工作模式
指令驱动模式
通常matlab以指令驱动模式工作,即在 matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是 matlab命令行方式。 命令行操作时,matlab窗口只允许一次执行 一行上的一个或几个语句。
命令行方式程序可读性差,而且不能存储, 对于复杂的问题,应编写成能存储的程序文 件。
m文件模式
将matlab语句构成的程序存储成以m为扩展名 的文件,然后再执行该程序文件,这种工作 模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令 窗口只允许一次执行一行上的一个或几个语 句。
二、m文件的创建
?echo指令用来控制m文件在执行过程中是否显示echoon打开所有命令文件的显示方式echooff关闭所有命令文件的显示方式echo在以上两者间切换?input提示用户从键盘输入数值字符串表达式
matlab的程序设计
—— matlab语言编程, 程序简洁、可读性很强 而且调试十分容易。
m文件简介
(3). 分支结构——根据一定条件来执行的各条语 句。 if — else — end语句有3种形式 1 if 表达式 执行语句 end 2 if 表达式 ——— 是 语句1 else ———— 否 语句2 end
3 if
表达式1 ——— 多分支 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 · · · else 语句n end
(3). 函数m文件— 需要输入变量,返回输出变量
matlab课件M文件程序设计基础
多行字符串数组直接创立 AB=[S1;S2]
要求:S1和S2长度相同,以保证各行长度相等
例补9 length(a) length(A) ab=[a;A,‘ ’] %补2个空格 ab(1,1) ab(2,1) ab=[a;A] %出现错误因长度不同,不能组合
入参数和返回参数。 function y = subfun( t )
➢ 函数名最好要和函数文
件名一致,通过函数文 件名调用函数
➢ 函数文件内部定义的函 数,通过函数名调用
if
sum(t)>0 y=abc(t);
函数文件
else
subfun.m
y=cba(t);
End
例:subfun.m
subfun(-7:4)
➢ 该文本文件可以用任何文字处理软件对进编辑, 也可以用“type filename.m〞形式在命令工作空 间翻开
➢MATLAB是解释性编程语言,逐句解释运行程序
➢MATLAB的各种工具箱都是用M文件组成,除内 嵌(built-in)M文件以外,用户可以对其进行修改和扩 充,进行二次开发
➢M 文 件 编 辑 器 是 MATLAB 自 带 的 , 是 一 个 Windows 的 标 准 界 面 , 主 要 有 file,edit,view,debug,breakpoint和text等菜单栏,上机时 参考P17第一章第4节M文件编辑器
例补1:无穷大inf
y=1/0 %无穷大 inf
1/y
%0
➢常用永久变量列表
永久变量 ans eps
Inf或inf pi i或j
Nan或nan nargin nargout realmax realmin
matlab编程简明教程
>> isfinite(5) >> isinf(5)
14
运算优先级
括号 幂,点幂 正号,负号,逻辑非 乘,除,点乘,点除 加,减 冒号运算 关系运算
& | && ||
高
低
15
本讲主要内容
M 文件 Matlab 编程基础
算术运算、关系运算、逻辑运算 控制结构:
顺序结构:数据输入输出(input、disp、fprintf 等) 选择结构:if 语句、switch 语句 循环结构:for 循环、while 循环
\n ( 换行 ) \t ( 制表符 ) \b ( 退格 ) \\ ( 反斜杆 ) %% ( 百分号 )
20
fprintf
例: >> a='Hello';
>> b=2.4; >> c=100*pi; >> fprintf('a=%s, b=%f, c=%e\n',a,b,c)
format 中的格式字符串要与输出变量一一对应
1
0
1
1
0
1
0
0
在 Matlab 中,0 表示 “假”,非零表示 “真”
12
逻辑运算
逻辑运算函数:all、any
any(x)
如果向量 X 中存在非零元素,则返回 1, 否则返回 0
all(x)
如果向量 X 中所有元素都非零,则返回 1, 否则返回 0
若 x 为矩阵,则 any 和 all 按列运算, 返回一个 0-1 向量
y=a+1; elseif n==1
y=a*(1+n); elseif n==2
MATLAB编程基础第讲M文件底层IO命令的数据输入与输出程序优化
MATLAB编程基础第讲M文件底层IO命令的数据输入与输出程序优化MATLAB是一种被广泛应用于科学计算、数学建模和工程分析领域的高级编程语言和交互式环境,其典型的使用场景包括数字信号处理、图形处理、矩阵计算、数值分析等等。
在MATLAB编程中,M文件是最基础、最常见的文件类型,其由一组MATLAB程序语句组成,可用于实现各种数学运算、数据处理、编程结构等功能。
而对于M文件的数据输入与输出,底层IO命令则是非常实用的工具,本文将阐述如何使用MATLAB底层IO命令实现M文件数据输入输出,并对其进行优化。
一、MATLAB底层IO命令在MATLAB中,读写文件有多种方法,常用的方法有fread、fwrite、fscanf、fprintf、load、save等。
而在这些方法中,fread和fwrite可以实现最基本的二进制数据读写功能,速度相对较快、效率较高。
与之不同的是,fscanf和fprintf则是针对文本文件的读写,其通常用于对ASCII字符数据的读写。
以下将分别介绍这些函数的基本使用方法。
1. fread函数fread函数可实现二进制数据的读写,其基本语法为:fid = fopen(filename, permission);data = fread(fid, size, precision);fclose(fid);其中,filename表示要进行读写操作的文件名,permission表示文件的访问权限,如r表示只读,w表示只写,a表示追加。
size是一个1x2的向量,表示读写数据的大小,如size=[100 1]表示读写100个数据项,每个数据项为1个元素。
precision是数据类型,如int32、double、uchar等。
在使用fread函数时,输入的数据类型需要与文件中的数据类型相匹配,否则会出现类型转换错误。
同时,fread函数的读写速度相对较快,但是其在处理文本文件时不可用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
(3)函数体说明及有关注解 ) 以(%)开头,用以说明函数的作用及有关内容 )开头, 如果不希望显示某段信息, 如果不希望显示某段信息,可在它的前面加空行 (4)函数体语句 ) 函数体内使用的除返回和输入变量这些在 函数体内使用的除返回和输入变量这些在function 除返回和输入变量这些在 语句中直接引用的变量以外的所有变量都是局部变 即需即用),即在该函数返回之后, ),即在该函数返回之后 量(即需即用),即在该函数返回之后,这些变量 会自动在MATLAB的工作空间中清除掉。如果希望 的工作空间中清除掉。 会自动在 的工作空间中清除掉 这些中间变量成为在整个程序中都起作用的变量, 这些中间变量成为在整个程序中都起作用的变量, 则可以将它们设置为全局变量。 则可以将它们设置为全局变量。 (global) )
18
5.4.3 文件读写的I/O命令函数
1 fopen 常用调用格式: fn=fopen(‘filename’,’permission’) fopent(‘all’) [filename,permission]=fopen(fn) fopen(‘filename’) (1)filename 要打开的文件名 (2)permission 指定的操作方式,常用的有r,w,a(追加)等。 Rb,wb,ab针对二进制的文件。Rt wt at针对文本格式的文件。 (3)fn 指的是被打开文件的文件代号。如果打开成功为正整数。 否则为-1。 (4)all指列出用于当前已经打开的除标准文件外全部文件的文 件代号。
9
3、函数文件
例myhilb1.m
myhilb.m
• 同样以.m格式存取,但文件名必须与函数名相同,函数接 同样以.m格式存取,但文件名必须与函数名相同, .m格式存取 受输入参数,然后执行并输出结果。 help命令可以显示 受输入参数,然后执行并输出结果。用help命令可以显示 它的注释说明。 它的注释说明。 • 具有标准的基本结构。 具有标准的基本结构。 (1)函数定义行(关键字 )函数定义行(关键字function) ) function [out1,out2,..]=filename(in1,in2,..) 输入和输出(返回)的参数个数分别由nargin和nargout两 输入和输出(返回)的参数个数分别由 和 两 保留的变量来给出。(支持多态) 个MATLAB保留的变量来给出。(支持多态) 保留的变量来给出。(支持多态 (2)第一行帮助行,即H1行 )第一行帮助行, 行 以(%)开头,作为 )开头,作为lookfor指令搜索的行 指令搜索的行
6
5、程序尽量模块化,也就是采用主程序调用子程序的 、程序尽量模块化,也就是采用主程序调用子程序的 方法,将所有子程序合并在一起来执行全部的操作。 方法,将所有子程序合并在一起来执行全部的操作。 6、充分利用Debugger来进行程序的调试(设置断点、 、充分利用 来进行程序的调试( 来进行程序的调试 设置断点、 单步执行、连续执行)。 单步执行、连续执行)。 7、设置好MATLAB的工作路径,以便程序运行。 、设置好 的工作路径, 的工作路径 以便程序运行。
3
2. echo命令
echo命令可使文件在执行的过程中可见 echo on 切换到显示其后所有被执行命令状 态 echo off切换到显示其后所有被执行命令文 件指令不被显示的状态
3. Pause
使程序运行暂停,等待用户按任何键继续。
4
4. Break语句
当条件满足时,可使 当条件满足时,可使while, for结构的循环提前终 , 结构的循环提前终 止。 例5-16 计算1~10的和
8
三、MATLAB的程序类型 MATLAB的程序类型
MATLAB的程序类型有三种, MATLAB的程序类型有三种,一种是在命令窗口下执行的 的程序类型有三种 脚本M文件;另外一种是可以存取的M文件,也即程序文 脚本M文件;另外一种是可以存取的M文件,也即程序文 函数( 命令文件) 最后一种是函数 function)文件。 件(命令文件);最后一种是函数(function)文件。 1、脚本M文件(历史命令) 脚本M文件(历史命令) 在命令窗口中输入并执行, 在命令窗口中输入并执行,它所用的变量都要在工作空间中 获取,不需要输入输出参数的调用,退出MATLAB后就释放了。 MATLAB后就释放了 获取,不需要输入输出参数的调用,退出MATLAB后就释放了。 2、程序文件 、 格式进行存取, 以.m格式进行存取,包含一连串的 格式进行存取 包含一连串的MATLAB指令和必要 指令和必要 的注解。需要在工作空间中创建并获取变量, 的注解。需要在工作空间中创建并获取变量,也就是说处 理的数据为命令窗口中的数据,没有输入参数, 理的数据为命令窗口中的数据,没有输入参数,也不会返 回参数。 类同于批处理文件 类同于批处理文件) 回参数。(类同于批处理文件 程序运行时只需在工作空间中键入其名称即可。 程序运行时只需在工作空间中键入其名称即可。
例5-21
who diary data2.m b=1:10 b1=eye(4); b2=magic(5); diary off who c=b2.^2 type data2.m b=1:10 b1=eye(4); b2=magic(5); diary off diary on b3=5:15 diary off type data2.m b=1:10 b1=eye(4); b2=magic(5); diary off b3=5:15 diary off
12
5.4 底层I/O命令的数据输入与输出
5.4.1 数据的输入 1 直接生成数据法 例5-18 直接在命令窗口输入 A=[3 2 1;8 5 2;9 6 3]
13
5.4.1 数据的输入
2 使用M文件将文件中的数据输入: 建立一个M文件,在文件中输入数据。 例5-19 M文件输入数组 function matrix1 B=[3 2 1;8 5 2;9 6 3;1 1 1]
第十一讲
程序流控制、 M文件、底层命令的数据输入与 输出、程序优化
梁丙臣
1
5.2.5 程序流控制
1. return语句 用来终止当前正在执行的函数中的命令,返 回调用它的函数,也可用于终止键盘输入的 模式,把控制权交给键盘。
2
例5-15 return控制
A=[1,2,3;4,5,6] [x,y]=size(A) if isempty (A) disp('Matrix A is empty'); return elseif (x~=y) disp('Matrix A is not a square'); return else disp('Matrix A is a square'); end
14
5.4.1 数据的输入
3 使用load命令载入数据: 常用调用格式load filename.mat 例5-20 load文件 Data_B.txt 321 852 963 load Data_B.txt Y=Data_B.^3
15
5.4.2 数据的输出
数据的输出主要有3种方式 (1)直接在终端上显示结果 (2)diary命令 用来将命令控制窗口中的有关文件内容以文本的形 式存入一个指定文件中,以后可以整理编辑成所需 的形式。 diary filename %将内容记录到文件名为filename %将内容记录到文件名为 将内容记录到文件名为filename 的文件中 diary on %再打开上面曾打开过的diary文件,并返 回到diary命令原处 diary off %暂停执行diary命令
11
四、声明子程序(函数程序)变量 声明子程序(函数程序)
1、子程序与主程序之间的数据是通过参数进行传递的,子程 、子程序与主程序之间的数据是通过参数进行传递的 通过参数进行传递 序应用主程序传递来的参数进行计算后, 序应用主程序传递来的参数进行计算后,将结果返回主程 序。 可利用return命令终止当前子程序。 命令终止当前子程序。 可利用 命令终止当前子程序 2、如果一个函数内的变量没有特别声明,那么这个变量只 如果一个函数内的变量没有特别声明, 在函数内部使用,即为局部变量。 在函数内部使用,即为局部变量。如果两个或多个函数共用 一个变量(或者说在子程序中也要用到主程序中的变量, 一个变量(或者说在子程序中也要用到主程序中的变量,注 意不是参数),那么可以用global来将它声明为全局变量。 ),那么可以用global来将它声明为全局变量 意不是参数),那么可以用global来将它声明为全局变量。 全局变量的使用可以减少参数传递, 全局变量的使用可以减少参数传递,合理利用全局变量可 以提高程序执行的效率。 以提高程序执行的效率。
7
文件的编辑及MATLAB 二、M文件的编辑及MATLAB工作路径的设置 文件的编辑及MATLAB工作路径的设置
进入MATLAB的Editor/Debugger窗口来编辑程序 的 进入 窗口来编辑程序 (edit *.m) 在编辑环境中,文字的不同颜色显示表明文字的不同属性。 在编辑环境中,文字的不同颜色显示表明文字的不同属性。 绿色:注解;黑色:程序主体;红色:属性值的设定; 绿色:注解;黑色:程序主体;红色:属性值的设定;蓝 控制流程。 色:控制流程。 在运行程序之前,必须设置好MATLAB的工作路径,使 在运行程序之前,必须设置好 的工作路径, 的工作路径 得所要运行的程序及运行程序所需要的其他文件处在当前 目录之下,只有这样,才可以使程序得以正常运行。 目录之下,只有这样,才可以使程序得以正常运行。否则 可能导致无法读取某些系统文件或数据, 可能导致无法读取某些系统文件或数据,从而程序无法执 行。 通过cd指令在命令窗口中可以更改 显示当前工作路径。 指令在命令窗口中可以更改、 通过 指令在命令窗口中可以更改、显示当前工作路径。 通过路径浏览器( 通过路径浏览器(path browser)也可以进行ave filename options 保存当前工作空间的所有变量到filename制定的文件 中,此文件后缀名通常为mat。如果不指定filename变量,则会默认保存到 matlab.mat这个文件中。 具有一下options: -append 在已经存在的mat文件中保存此变量。 -format 确定要保存变量的格式,有下面这些格式: -ascii 8位ASCII格式. -ascii -tabs 8位ASCII格式以tab位分隔符. -ascii -double 16位ASCII格式. -ascii -double -tabs 16位ASCII格式以tab位分隔符. -mat 默认格式 下面使一些例子: 1:save test.mat 把当前工作空间的所有变量保存到test.mat 2:save('d:mymfilesjune10','vol','temp','-ASCII') 把变量vol和temp保存到 17 June10中,使用ASCII 格式