在日常数据分析或工程计算中,经常遇到这样的场景:同事发来一个Excel表格,里面是实验测得的温度、压力数据;或者自己跑完一段仿真,想把结果保存下来下次接着用。这时候,Matlab的输入输出功能就不是可选项,而是刚需。
读取外部数据:不止load那么简单
很多人一上来就用 load('data.mat'),但实际工作中,原始数据更多藏在Excel、CSV甚至文本里。比如要读Excel里的两列数据:
data = readmatrix('sensor_log.xlsx'); % 自动识别数字,跳过表头
% 或者更灵活地用readtable
tbl = readtable('sensor_log.xlsx', 'ReadVariableNames', true);
如果Excel里混着文字和数字,readtable能自动分列并保留变量名,比老式xlsread省心不少。
保存变量到本地:选对格式很关键
调试阶段常用 save mydata.mat a b c,把几个变量打包存成.mat文件——这是Matlab原生格式,速度快、精度全,适合内部流转。但如果要交给没装Matlab的同事看,就得换路子:
writematrix(A, 'output.csv'); % 矩阵直接写入CSV
writematrix(round(B*100)/100, 'report.csv', 'Delimiter', ';'); % 控制小数位+分号分隔
注意:中文路径容易出错,建议先用cd切到英文目录下操作,避免乱码或报错。
跨平台交换:小心数据类型陷阱
从Python传来的.npy文件,或从R导出的.RData,Matlab不能直读。但常见格式有折中方案:让对方先导出为CSV,再用readmatrix加载;或者统一用HDF5——Matlab支持h5write/h5read,大数组、多维结构都能稳稳接住。
一个小技巧:临时变量快速导出
调试时想立刻看某变量长啥样?不用点工作区,一行搞定:
disp(['最大值:', num2str(max(x))]);
fprintf('前5个值:%f %f %f %f %f\n', x(1:5));
要是想截图存档,exportgraphics(gca, 'plot.png')比手动截图准多了。