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
中格式化数字转换为字符串的方式
我正在将对象的表示写入文件。它遵循这个简单的格式
<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