本节说明 MATLAB 命令窗口中的格式化输出:fprintf 通过格式串中的占位符按类型插入变量值;disp 用于简单显示;若需将格式化结果保存为字符向量以便复用,应使用 sprintf。格式说明与 C 语言中的 printf 族相近,但须注意 MATLAB 数组与标量在传参时的形状要求。
fprintf('我是 %s,今年 %d 岁,身高 %.2f 米。\n', '小明', 12, 1.405)我是 小明,今年 12 岁,身高 1.41 米。%s 对应字符串,%d 对应整数,%.2f 对应保留两位小数的浮点数,\n 表示换行。占位符的个数与后面给出的参数个数须一致;少给参数将报错,多给的参数会被忽略或引起意外输出。漏写 \n 时,后续 fprintf 会接在同一行继续写。
占位符对照
| 占位符 | 含义 | 例子 |
|---|---|---|
%s | 字符串 | '你好' |
%d | 整数 | 42 |
%f | 浮点数 | 3.14159 |
%.2f | 保留两位小数 | 3.14 |
%e | 科学计数法 | 3.14e+00 |
\n | 换行 | |
\t | 制表符(对齐用) |
宽度控制:%12.2f 表示总宽度 12、保留 2 位小数,不足时在左侧补空格(右对齐)。若需在数值前补零,可使用 %012.2f:
A = 3141.592654;
fprintf('%12.2f\n', A) % ' 3141.59'
fprintf('%012.2f\n', A) % '000003141.59'fprintf、sprintf 与 disp
| 函数 | 输出目标 | 典型用途 |
|---|---|---|
disp | 命令窗口 | 简单显示,自动换行 |
fprintf | 命令窗口或文件 | 需要指定格式,或写入已打开的文件 |
sprintf | 返回字符串变量 | 将格式化结果存入变量供后续使用 |
msg = sprintf('结果:%d', 42); % 存进变量,稍后再用
disp(msg) % 显示出来fprintf 的第一个参数若为文件标识符,则写入文件而不是命令窗口,见文件读写。需要把同一句话嵌进图形标题或文件名时,应使用 sprintf 得到字符向量,再交给其他函数。
循环中的逐行输出
fprintf 默认不在每次调用末尾换行,除非格式串中包含 \n,因此在循环中可按行控制输出:
for i = 1:5
fprintf('第 %d 次\n', i);
end上述代码将输出 5 行,每行对应一次迭代序号。
练习建议
- 用
fprintf输出包含姓名与年龄的一句完整中文。 - 分别用
%.3f与%e打印pi,对比格式差异。 - 在循环中以
i=3, i^2=9的形式打印 1 到 10 的平方。 - 使用
%05d打印 42,观察前导零的个数。
本节说明了 fprintf 占位符、宽度控制及与 disp、sprintf 的分工。下一节介绍数据导入与工作区保存:importdata、类型转换与 save / load。