关闭

matlab文件操作

213人阅读 评论(0) 收藏 举报
//////////////////////////////文件输入输出////////////////////////////////////////////
MATLAB 系统具有直接对磁盘文件进行访问的功能,用户不仅可进行高层的程序设计, 必要时还可进行低层次磁盘文件的读写操作,增强了 MATLAB 程序设计的灵活性。 MATLAB 内建有很多有关文件输入和输出的函数,使用者可以很方便地对二进制文件或 ASCII 文件进行打开、关闭和存储等操作。这些函数是基于 C 语言的文件 I/O 函数的,简单 易学



在 MATLAB 中,使用 C 语言中的同名函数 fopen 来完成这一功能,其语法为: fid=fopen(’filename’,’permission’)
如 果要知道 fopen 操作失败的原因,可以使用下列方式调用:
[fid,message]=fopen(’filename’,’r’)

如果是打开一个存在的文件,示例代码设置如下:
[fid,message]=fopen(’sum2.m’,’r’);
if fid==-1
    disp(message);
end

关闭文件
在进行完读写操作后,必须关闭文件,以免打开文件过多,造成系统资源浪费,命令为:
>> status=fclose(fid)

打开和关闭文件的操作都比较费时,尽量不要将它们置于循环中,以提高程序执行的效率

读取二进制文件
MATLAB 中函数 fread 可以从文件中读取二进制数据,将每一个字节看成一个整数,将 结果写入一个矩阵返回。最基本的调用形式为:
a=fread(fid)

写入二进制文件
函数 fwrite 的作用是将一个矩阵的元素按所定的二进制格式写入某个打开的文件,并返 回成功写入的数据个数。格式为:
count=fwrite(fid,a,precision)

读取文本文件
如果需要将文本文件中的某一行读出,并将该行的内容以字符串形式返回,可采用以下 两个命令:
tline=fgetl(fid)
tline=fgets(fid)

若已知 ASCII 文件的格式,要进行更精确的读取,可用 fscanf 函数从文件中读取格式化 的数据,其使用语法如下:
[a,count]=fscanf(fid,format,size)

fscanf 在读取文件时,是逐行进行的,在返回矩阵时,是将数据逐列写入的。(2)本 节所介绍的命令不能对二进制文件进行操作。(3)sscanf 函数和 fscanf 函数的功能类似, 不同的是 sscanf 是从字符串中读取数据,而不是对文件的操作。

MATLAB 的函数 fprintf 的作用是将数据转换成指定格式字符串,写入到文本文件中。其 语法格式为:
count=fprintf(fid,format,y)

控制文件内位置指针的函数 函数 功能 feof 测试指针是否在文件结束位置 fseek 设定文件指针位置 ftell 获取文件指针位置 frewind 重设指针至文件起始位置 
• feof feof 用于测试指针是否在文件结束位置,其语法格式为:
feof(fid)
• fseek fseek 用于设定指针位置,其语法格式为:
status=fseek(fid,offset,origin)
• ftell ftell 用于返回现在的位置指针,其语法格式为:
position=ftell(fid)
• frewind frewind 用于将指针返回到文件开始,语法格式为:
frewind(fid)
实例:下面通过一个例子来介绍这几个命令的使用方法,示例代码如下:
a=[1:6];
fid=fopen(’six.bin’,’w’);
fwrite(fid,a,’short’);
status=fclose(fid);
fid=fopen(’six.bin’,’r’);
six=fread(fid,’short’);
eof=feof(fid);
frewind(fid);
status=fseek(fid,2,0);
position=ftell(fid);
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21810次
    • 积分:1989
    • 等级:
    • 排名:第19668名
    • 原创:185篇
    • 转载:27篇
    • 译文:0篇
    • 评论:2条