matlab - 如何让 fprintf 为空数值保留空间?

标签 matlab

在 MATLAB 中,我使用 fprintf 在列标题下打印数值列表,如下所示:

fprintf('%s %s %s %s\n', 'col1', 'col2', 'col3', 'col4')
for i = 1:length(myVar)
    fprintf('%8.4g %8.4g %8.4g %8.4g\n', myVar{i,1}, myVar{i,2}, myVar{i,3}, myVar{i,4})
end

结果是这样的:

    col1     col2     col3     col4
   123.5    234.6    345.7    456.8

但是,当其中一个单元格为空时(例如 myVar{i,3} == []),不会保留空间:

    col1     col2     col3     col4
   123.5    234.6     456.8

如何在我的格式中为可能为空的数值保留空间?

最佳答案

一种选择是先使用函数 CELLFUNNUM2STR 将每个单元格更改为字符串,然后使用 FPRINTF 将每个单元格打印为字符串:

fprintf('%8s %8s %8s %8s\n', 'col1', 'col2', 'col3', 'col4');
for i = 1:size(myVar,1)
  temp = cellfun(@(x) num2str(x,'%8.4g'),myVar(i,:),'UniformOutput',false);
  fprintf('%8s %8s %8s %8s\n',temp{:});
end

这应该给你这样的输出:

    col1     col2     col3     col4
   123.5    234.6             456.8

另请注意,我在您的第一个 FPRINTF 调用中添加了八位以修复列标签的格式并将 length(myVar) 更改为 size(myVar,1),因为您正在遍历 myVar 的行。

关于matlab - 如何让 fprintf 为空数值保留空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127404/

相关文章:

matlab - Matlab音频格式-如何处理?

global-variables - MATLAB:在并行模式下运行时全局变量会发生什么情况?

arrays - Matlab将元胞数组保存到文本文件

matlab - 解决与内置函数的名称冲突,另请参阅文档部分

matlab - 如何从 MATLAB 中的自相关数据中提取峰值?

matlab - Matlab中的训练数据集、验证数据集、测试数据集

python - 四倍精度特征值、特征向量和矩阵对数

matlab - 在哪里可以找到 MATLAB 的正式语法?

matlab - 使用给定数量的输入参数创建函数

Matlab多次破坏y轴