MATLAB文件操作

一、文件打开与关闭

1、fopen函数

用于打开文件,其调用格式为:
fid = fopen(filename,permission);
其中, fid为文件识别号,打开文件成功时,fid返回一整数,用来标识该文件;打开文件不成功时,fid值为-1。
filename:待操作的文件名;
permission:对文件的允许使用方式。
文件的使用方式如下:
• ‘r’: 以读方式打开一个文件;
• ‘w’: 以写方式打开一个文件;
• ‘a’: 在该文件尾添加数据;
• ‘r+’: 以读和写方式打开一个文件;
• ‘w+’:打开或创建用于读写的文件,覆盖已有的内容;
• ‘a+’: 以追加的方式读写文件。

2、fclose函数

用于关闭已打开的文件,其调用格式为:
status = fclose(fid);
fid是要关闭文件的标识号。如果fid为all,则关闭所有已打开的文件,但标准文件除外,即屏幕、键盘。返回 0 表示关闭成功,返回-1则表示关闭不成功。

注意:fopen与fclose要同时出现在一个程序中,即打开一个文件,操作完毕后需要关闭该文件。

二、文本文件的读写

1、fscanf函数和fprintf函数

fscanf函数用于读取文本文件的内容,fprintf函数用于将数据写入文本文件中。
调用格式为:
[A, count] = fscanf(fid, fmt, size);
count = fprintf(fid, fmt, A);

其中,A用于存放读写的数据,count返回成功读写的数据元素个数;参数fid为文件标识号,fmt用以控制读取的数据格式,size用于指定A的大小。
fmt由%加上格式符组成,常见的数值格式控制符如下:
• ‘%d’: 整数;
• ‘%f’:小数形式的实数;
• ‘%e’:科学计数法形式的实数;
• ‘%c’:字符;
• ‘%s’: 字符串;
在%之后还可以加上数据宽度。
size可取值:
• n: 指定读取n个数据;
• Inf:指定读取文件中的所有数据;
• [m,n]:指定读取m× n个数据,数据按列顺序存放到矩阵A。

2、案例1

1  文件“观测记录.txt”的内容如图所示,读取文件前10行的数据。
fid=fopen('观测记录.txt','r');
title=fscanf(fid,'%s',6);
qxsj=[];
for i=1:10
    qxsj{i,1}=fscanf(fid,'%s',1);
    qxsj{i,2}=fscanf(fid,'%s',1);
    qxsj{i,3}=fscanf(fid,'%f',1);
    qxsj{i,4}=fscanf(fid,'%f',1);
    qxsj{i,5}=fscanf(fid,'%f',1);
    qxsj{i,6}=fscanf(fid,'%s',1);
end
fclose(fid);

在这里插入图片描述

三、二进制文件的读写

1、fread函数和fwrite函数

fread函数用于读取二进制文件,fwrite函数将数据写入文件。
调用格式为:
[A, count] = fread(fid, size, precision, skip);
count = fwrite(fid,A,precision);
其中,A用于存放读写的数据,count返回读写成功的数据个数。fid为文件识别号,precision指定读写数据的类型,size用于指定A的大小,skip指定按比例周期性地跳过一些数据。

2、案例2

2  计算y=exp(x)sinx,其中x∈[0,2π]。将x、y写入二进制文件“模拟数据.dat”。
fid=fopen('模拟数据.dat','w');
x=linspace(0,2*pi,100);
y=exp(x).*sin(x);
count=fwrite(fid, [x; y], 'double');
fclose(fid);

四、数据文件定位

1、fseek函数

该函数用于改变文件位置指针的位置,其调用格式为:
fseek(fid, offset, origin);
其中参数fid为文件识别号,offset表示位置指针相对移动的字节数;origin表示位置指针移动的参照位置。
origin的可取值:
• 'cof '或0:表示文件指针的当前位置;
• 'bof '或-1:表示文件的开始位置;
• 'eof’或1:表示文件的结束位置。

2、ftell函数

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

3、feof函数

用于判断当前的文件位置指针是否到达文件尾部,其调用格式为:
status = feof(fid);
当到达文件结束位置时,返回值为1,否则为0。

4、案例3

3  读取例2生成的文件中的后40组数据,并绘制图形。
fid=fopen('模拟数据.dat','r');
status=fseek(fid, -40*2*8, 'eof');
x=[];  y=[];
while ~feof(fid)
    x=[x; fread(fid,1,'double')];
    y=[y; fread(fid,1,'double')];
end
plot(x,y);
fclose(fid);

参考资料

科学计算与MATLAB语言

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Radar_LFM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值