文件操作
Matlab环境下的文件与其它系统一样,也有
二类文件组成,一是文件,又称 M 文件,
另一类是数据文件。系统除提供了文件的一
般管理功能外,还提供了对数据文件进行操
作的特殊功能函数。
3.1 基本命令
1. help 帮助命令
格式: help 命令名
例如: help plot
help
matlab\general
2. what 显示目录内容命令
格式: what [目录名]
例如:: what matlab
显示 matlab目录下的所有 M-文件。
3.1 基本命令
3.type 显示文件内容命令
格式: type文件名
显示M-文件的内容。
4. 寻找命令
格式: lookfor 命令或字符串
寻找命令或字符串是否存在。
例如: lookfor cos
3.1 基本命令
5.which 寻找函数命令
格式:which 函数名
显示函数所在的文件位置,给出路径。
例如: which pinv
6 .path 路径控制命令
格式: path [路径]
显示或改变搜索路径。
例如: path (path, ‘d:\test\aaa’)
3.1 基本命令
7.who,whos 显示变量命令
显示当前变量。 whos命令更详细。
8 .load,save 取出与保存结果命令
从磁盘上读出或保存计算结果。
例如: save test
将变量存入 test.mat文件中。
例如: save test x y 仅保存 x ,y 变量。
3.1 基本命令
9 .clear 清除变量命令
格式: [变量名]
例如: clear x y
10 .disp 显示文本或变量内容命令
例如:x=[1 2 3]
disp(x)
y=‘aaaaaaa’
disp(y)
3.1 基本命令
11 .cd 改变目录命令
与 DOS 类似。
12 .dir 显示目录内容命令
显示目录里的文件。
例如:dir \matlab\notebook
3.1 基本命令
13.delete 删除文件或对象命令
格式: delete 文件名 不能用通配符
delete(对象)
例如:H=PLOT(X,X)
delete (H)
删除图形对象 H
3.1 基本命令
14.! 执行系统命令
在 Windows下运行。 “! ”用于执行 DOS
命令。
例如:!dir *.exe
显示当前目录里的 EXE文件。
3.2 文件的打开与关闭
Matlab 提供了对数据文件建立、打开、读、
写以及关闭等一系列函数,数据文件一般存
放在磁盘等介质上,用文件名标识,系统对
文件名没有特殊要求。文件数据格式有二种
形式,一是二进制格式文件,二是 ASCII
文本文件,系统对这两类文件提供了不同的
读写功能函数。
3.2 文件的打开与关闭
1 fopen打开文件
在读写文件之前,必须先用 fopen命令打开
一个文件,并指定允许对该文件进行的操
作。文件操作结束后,应及时关闭文件,以
免数据的丢失或误修改。fopen 函数格式为:
Fid= fopen(filename,permission)
3.2 文件的打开与关闭
其中 filename 为文件名,permission 为
文件格式,可以是下列格式之一:
•‘r’ 打开文件,读数据,文件必须存在。
•‘w’ 打开文件,写数据,若文件不存在,
系统会自动建立。
•‘a’ 打开文件,在文件末尾添加数据。
•‘r+’ 打开文件,可以读和写数据,文件必
须存在。
•‘w+’ 打开文件,供读与写数据用。
•‘a+’ 打开文件,供读与添加数据用。
•‘W’ 打开文件供写数据用,无自动刷新功
能。
•‘A’ 打开文件供添加数据用,无自动刷新
功能。
3.2 文件的打开与关闭
例如:打开一个名为 std.dat的数据文件并进
行读操作,其命令格式为:
Fid=fopen( ‘std.dat’, ’r’ )
上述打开格式均为二进制格式,如果想用
ASCII文本格式,则必须在格式字符串中加
上字符 t,例如用’r t’
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示以 ASCII格式打开
供读操作的数据文件。
3.2 文件的打开与关闭
2 fclose关闭文件
文件在进行完读、写等操作后,应及时关闭,
以保证文件的安全可靠。关闭文件命令格式
为:
Sta=fclose(Fid) 关闭 Fid所表示的文件
Sta 表示关闭文件操作的返回代码,若关闭
成功,返回 0,否则返回–1。
3.3 文件的读写操作
1 二进制数据文件
fread 读二进制数据文件。格式为:
[A,COUNT]=fread(Fid,size,precision)
其中 A为数据矩阵,COUNT返回所读取的
数据元素个数。size为可选项,若不选用则
读取整个文件内容,若选用它的值可以是下
列值:
3.3 文件的读写操作
N 读取 N个元素到一个列向量。
inf 读取整个文件。
[M,N] 读数据到 M×N 的矩阵中,数据按
列存放。
3.3 文件的读写操作
precision 用于控制所读数据的精度格式。
缺省格式为 uchar,即无符号字符格式。例
如:Fid=fopen(‘std.dat’, ‘r’);
A=fread(Fid, 100, ’long’);
Sta=fclose(fid);
以读数据方式打开数据文件 std.dat,并按长
整型数据格式读取文件的前100个数据放入
向量 A,然后关闭文件。
3.3 文件的读写操作
fwrite 函数以二进制格式向数据文件写数
据,其格式为:
COUNT=fwrite (Fid, A, precision)
例如:Fid=fopen(‘magic5.bin’, ‘wb’);
fwrite(Fid, magic, ’int32’);
上述语句将矩阵 magic 中的数据写入文件
magic5.bin 中,数据格式为 32 位整型二进制
格式。
3.3 文件的读写操作
【例 1】建立一数据文件 test.dat,用于存放
矩阵 A的数据。
已 知 A=[-0.6515 -0.2727 -0.4354
-0.3190 -0.9047
-0.7534 -0.4567 -0.3212
-0.4132 -0.3583
-0.9264 -0.8173 -0.7823
-0.3265 -0.0631
-0.1735 -0.7373 -0.0972
-0.3267 -0.6298
-0.4768 -0.6773 -0.6574
-0.1923 -0.4389]
3.3 文件的读写操作
Fid=fopen(‘test.dat’, ‘w’)
cnt=fwrite(Fid, A, ‘float’)
fclose(Fid)
程序段将矩阵 A 的数据以二进制浮点数格
式写入文件 test.dat中。
Fid=fopen(‘test.dat’, ‘r’)
[B,cnt]=fread(Fid, [5,inf], ‘float’)
fclose(Fid)
读取文件 test.dat的内容。
3.3 文件的读写操作
2 文本文件
fscanf 读 ASCII文本文件
[A,COUNT]= fscanf (Fid, format, size)
其中 A为数据矩阵,用以存放读取的数据,
COUNT 返回所读取的数据元素个数。
format 用以控制读取的数据格式,由%加上
格式符组成,格式符为:
d, i, o, u, x, e, f, g, s, c与[. . .]
3.3 文件的读写操作
例如:
s=fscanf(fid, ‘%s’) 读取一个字符串
a=fscanf(fid, ‘%5d’) 读取 5位数的整数
b= fscanf(fid, ‘%6.2d’) 读取浮点数
3.3 文件的读写操作
fprintf 写 ASCII数据文件,其格式为:
COUNT= fprintf(Fid, format, A,…)
其中 A 为要写入文件的数据矩阵,先按
format 格式化数据矩阵 A,后写入到 Fid 所
指定的文件。
例如:x = 0: 0.1: 1;
y = [x; exp(x)];
Fid = fopen('exp.txt', 'w');
fprintf(Fid,'%6.2f %12.8f\n',y);
fclose(Fid);
3.4 数据文件定位写操作
1.fseek函数定位文件位置指针,格式为:
status=fseek(Fid, offset, origin)
其中 Fid 为文件句柄,offset 表示位置
指针相对移动的字节数,若为正整数表示向
文件尾方向移动,若为负整数表示向文件头
方向移动,origin 表示位置指针移动的参照
位置,它的取值有三种可能:’cof ’表示文件
的当前位置, ’bof ’表示文件的开始位
置,’eof ’表示文件的结束位置。若定位成功
status返回值为 0,否则返回值为–1。
3.4 数据文件定位写操作
2. ftell函数返回文件指针的当前位置。
其格式为:
position=ftell (Fid)
返回值为从文件开始到指针当前位置的字
节数。若返回值为–1表示获取文件当前位置
失败。
3.4 数据文件定位写操作
【例 2】下述程序段说明了函数 fseek和 ftell
的使用。
a=[1: 5];
Fid=fopen(‘fdat.bin’, ‘w’); 以写方式打开
文件 fdat.bin
fwrite(Fid, a, ‘int16’ ); 将 a中的 5个
数据元素分别以 双字节整型格式
写入
status=fclose(Fid); 文件
fdat.bin
Fid=fopen(‘fdat.bin’, ‘r’); 以读数据方式打
开文件
3.4 数据文件定位写操作
status=fseek(Fid, 6, ‘bof’); 将文件数
据指针从开始位置向尾部移动 6个字节
four=fread(Fid, 1, ‘int16’); 读取当前数据,
即第 4个数据,并移动指针到下一个数据
position=ftell(Fid);
eight=fread(Fid, 1, ‘int16’); 读取第 8
个数据
status=fclose(Fid);
习题
1.已知文件句柄为 Fid,请写出完成下列操
作的命令或命令序列
a 以读和写方式打开二进制格式数据文
件
b 将浮点数 F添加到文件尾部
c 将文件内容以浮雕点数格式读入数据
向量 B
习题
2.建立数据文件 test.dat,要求该文件可以
读、写。文件内容如下:
NAME SCORE
Liuqi 84.0
Zhangbin 87.5
Liping 90.0
Wangwei 78.0
Wujian 92.5
… …