MATLAB 的输入与输出:一篇速查博客
一句话导读
程序=算法+数据,数据离不开"进来"和"出去"。MATLAB 提供 10 余种 IO 方式,涵盖键盘、文件、剪贴板、网络、硬件。记住这篇"地铁图",5 分钟找到你需要的接口。
一、输入(Input)速览
| 场景 | 典型命令 / 函数 | 返回类型 | 备注 |
|---|---|---|---|
| 键盘交互 | x = input('提示> ') |
数值/字符串/矩阵 | 可选 's' 强制文本 |
| 键盘单次按键 | key = getkey |
字符 | 不显示在命令行 |
| 拖放文件 | uigetfile |
文件名细胞串 | 弹出系统对话框 |
| 整个工作区 | uiopen / 双击文件 |
变量列表 | 等价于 load |
| Excel/CSV | readmatrix, readtable |
矩阵 / table | 自动识别表头 |
| 文本行 | readlines (R2020b+) |
string 列向量 | 一次性读全部行 |
| 二进制 | fread, memmapfile |
uint8 或任意 | 大文件内存映射 |
| 图片 | imread |
M×N×3 uint8 | 支持 JPG/PNG/TIF/RAW |
| 音频 | audioread |
采样向量 + fs | 自动归一化到 [-1,1] |
| 视频 | VideoReader |
对象(可逐帧) | 支持 MP4/AVI/MOV |
| 串口 / TCP | serialport, tcpclient |
对象 + 读写 | 硬件/网络流 |
| 剪贴板 | readclip, clipboard |
字符串 / 图像 | 与 Excel 互粘 |
二、输出(Output)速览
| 场景 | 典型命令 | 说明 |
|---|---|---|
| 命令窗口 | disp, fprintf, sprintf |
调试/日志 |
| 图窗 | plot, imshow, heatmap |
可视化 |
| 保存变量 | save *.mat |
二进制,完整恢复 |
| 文本/CSV | writematrix, writetable |
带表头,Excel 直开 |
| 任意文本 | fprintf + 文件句柄 |
完全自定义格式 |
| 二进制 | fwrite, memmapfile |
流式或内存映射 |
| 图片 | exportgraphics, print, imwrite |
矢量 PDF/位图 PNG |
| 音频 | audiowrite |
WAV、FLAC、OGG |
| 视频 | VideoWriter |
MP4、AVI、MJPEG |
| 报告 | publish |
一键 PDF/HTML/Word |
| 剪贴板 | writeclip |
把表格/图片塞进 Ctrl+V |
三、键盘交互 10 秒上手
matlab
% 数值
age = input('请输入年龄: ');
% 字符串
name = input('请输入姓名: ', 's');
% 矩阵
A = input('请输入 2×2 矩阵,如 [1 2; 3 4]: ');
输入时可现场写表达式:[1:3; 4:6]、 pi/2 都合法。
四、文件读写最短路径
1. Excel/CSV 一条命令
matlab
T = readtable('data.xlsx','Sheet','Raw'); % 读
writetable(T,'clean.csv'); % 写
2. 纯文本列自定义
matlab
fid = fopen('log.txt','w');
for k = 1:N
fprintf(fid,'%04d %10.6f\n',k,result(k));
end
fclose(fid);
3. 图片"高清矢量"
matlab
plot(x,y); exportgraphics(gcf,'fig.pdf','Resolution',300);
五、完整模板:读→算→写→图
matlab
%% 1. 读 Excel
T = readtable('sales.xlsx');
%% 2. 计算
T.Profit = T.Revenue - T.Cost;
%% 3. 写 CSV
writetable(T,'profit.csv');
%% 4. 画图
bar(T.Date,T.Profit);
xlabel('月份'); ylabel('利润/万元');
title('2025 年月度利润');
%% 5. 保存高清图
exportgraphics(gcf,'profit.pdf');
六、常见坑提示
input不加's'会把3/2当成表达式 算,返回 1.5;要原样文本务必加's'。load *.mat会把变量直接塞进工作区 ,同名会覆盖;可用S = load('file.mat')结构体封装。csvwrite已废弃,优先writematrix/writetable。- 视频/音频写完后必须
close(writer),否则文件损坏。 - 串口/网口流读取注意 Terminator 设置,否则永远堵在
readline。
七、一张"地铁图"保存即用
输入
├─ 键盘 input / getkey
├─ 文件 readmatrix/readtable/imread/audioread/VideoReader
├─ 网络/硬件 tcpclient/serialport
└─ 剪贴板 readclip
输出
├─ 屏幕 disp/fprintf
├─ 图窗 plot→exportgraphics
├─ 文件 writematrix/writetable/fprintf/save/VideoWriter
└─ 剪贴板 writeclip
八、结语
记住"两条命令走天下 ":
读 → readmatrix / readtable
写 → writematrix / writetable
其余场景按地铁图对号入座,10 秒钟就能写出稳健 IO。
把这篇贴在桌面,再也不用翻 Help 啦!