本节说明 MATLAB 命令窗口中的格式化输出:fprintf 通过格式串中的占位符按类型插入变量值;disp 用于简单显示;若需将格式化结果保存为字符向量以便复用,应使用 sprintf。格式说明与 C 语言中的 printf 族相近,但须注意 MATLAB 数组与标量在传参时的形状要求。

MATLAB fprintf 格式化输出示例运行
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。