许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB文件读写全攻略:fopen、fread、fprintf怎么用?

MATLAB文件读写全攻略:fopen、fread、fprintf怎么用?

阅读数 2572
点赞 0
article_banner

在MATLAB做数据处理时,你是不是经常遇到这样的头疼问题:辛辛苦苦算好的数据不知道该怎么保存?或者拿到一个复杂的txt、二进制数据文件,完全不知道该怎么读取?其实,只要掌握了MATLAB的文件读写操作,这些都能轻松搞定。今天我们就从最基础的文件打开关闭,到进阶的二进制与格式化读写,手把手带你玩转MATLAB文件I/O。

文件打开与关闭:fopen与fclose的基础用法

在读写任何文件之前,第一步都是先用 fopen 函数“敲门”。它的常用语法是 fid = fopen('文件名', '模式')。这里的 fid 是文件标识符,如果打开成功,它会返回一个非负整数;如果失败(比如文件不存在),则会返回 -1。

文件打开的模式决定了你能对文件做什么操作。最常用的几种模式包括:

  • 'r':只读模式(默认),文件必须已经存在。
  • 'w':写入模式。如果文件已存在会清空内容,不存在则新建。
  • 'a':追加模式。在文件末尾添加新数据,不覆盖原有内容。
  • 'r+''w+''a+':分别对应读写、读写(清空/新建)、读写(追加)。

另外,在模式后面加上 't'(如 'rt')代表以文本方式打开,MATLAB会自动处理换行符;加上 'b'(如 'wb')则代表以二进制方式打开。操作完成后,千万别忘了用 fclose(fid) 关闭文件,成功关闭会返回 0。

读写二进制数据:fread与fwrite的高效操作

如果你需要处理图像原始数据、传感器采集的数值矩阵,二进制读写是最高效的选择。
写入二进制文件使用 fwrite,例如把一组双精度数据存入磁盘:

data = [1 2 3; 4 5 6];
fid = fopen('mydata.bin', 'wb'); % 以二进制写入模式打开
fwrite(fid, data, 'double');     % 将数据以双精度格式写入
fclose(fid);

读取二进制文件则使用 fread。你需要提前知道数据的类型(如 'int32', 'double', 'char' 等),否则读出来的会是一堆乱码:

fid = fopen('mydata.bin', 'rb'); % 以二进制读取模式打开
A = fread(fid, , 'double'); % 读取2x3的双精度矩阵
fclose(fid);

fread 的第三个参数 precision 非常关键,它告诉MATLAB文件里的数据到底是什么格式。

读写格式化文本:fscanf与fprintf的精准控制

处理普通的 txt 文档或带有特定格式的日志文件,fprintffscanf 是最好的搭档。它们的用法和 C 语言非常相似,通过 %d(整数)、%f(浮点数)、%s(字符串)等格式符来精准控制读写。

比如,你想把一组正弦波数据按漂亮的格式存入 txt 文件:

t = 1:5; s = sin(t);
fid = fopen('output.txt', 'wt');
fprintf(fid, '时间\t正弦值\n');
fprintf(fid, '%d\t%.4f\n', [t; s]); % 格式化写入
fclose(fid);

反过来,如果你想从这个 txt 文件里把数据读回 MATLAB,可以使用 fscanf

fid = fopen('output.txt', 'rt');
% 跳过第一行表头,按整数和浮点数的格式读取
data = fscanf(fid, '%d %f', [2, inf]); 
fclose(fid);

逐行读取与文件定位:fgetl、fgets与ftell

有时候文本文件每一行的格式都不一样,用 fscanf 很难匹配,这时就需要逐行读取。fgetl(fid) 可以读取文件的一行,并自动去掉行末的换行符;而 fgets(fid) 则会保留换行符。如果读到文件末尾,它们都会返回 -1。

配合 feof(fid)(判断是否到文件尾)和 frewind(fid)(把指针移回文件开头),你就能写出非常灵活的文本解析脚本。

熟练掌握这些MATLAB文件读写函数,无论是保存实验结果还是解析外部数据,都能让你得心应手。建议大家在日常练习中多动手尝试不同的文件模式和数据格式,把这些基础操作练成肌肉记忆。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空