在 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
如何在我的格式中为可能为空的数值保留空间?
最佳答案
一种选择是先使用函数 CELLFUN 和 NUM2STR 将每个单元格更改为字符串,然后使用 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/