Matlab输出矩阵以合理的格式归档

Matlab output matrix to file with a reasonable format

我正在将对象的表示写入文件。它遵循这个简单的格式

<key>:<value>\n

现在我有多个矩阵要输出,但是标准方式看起来很丑

f = open('somefile', 'w+t');
fprintf(f,'size:');
fprintf(f,'%+.4f\n', someObject.size);

但这只会导致像这样的不可读文件

size: 5.1234
3.1234
2.5421
232332

以此类推数百行。如果我在 python/numpy ( f.write("size: " + str(someObject.size) + "\n") 中这样做,我会得到一些可读的东西,比如

size:[[5.1234 3.1234 2.5421 232322]
[5.1234 3.1234 2.5421 232322]....

它保留了形状并正确对齐。我如何用 matlab 做到这一点。

您需要拆分fprintf命令。使用辅助功能:

function numpy_like_fprintf(fid, format_single_element, values)
fprintf(fid, '[');
fprintf(fid, [' ',format_single_element], values);
fprintf(fid, ' ]\n');

现在你可以

numpy_like_fprintf(f, '%+.4f', someObject.size);

或者,您可以使用 num2str 将数组转换为字符串,很像 python 的 str().
请注意,您可以在 num2str

中格式化数字转换为字符串的方式