以下是代码示例:
在Octave中
即Matlab沿第二维连接3D切片,而Octave沿第一维连接。
x = [1.1, 2.22, -3.3; 4.44, 5.55, 6.6];
fmt = '%.16g ';
y = num2str(x, fmt)
在 Matlab (R20105b) 中会产生不同的结果。
y =
1.1 2.22 -3.3
4.44 5.55 6.6
在Octave(4.0.0)中
y =
1.1 2.22 -3.3
4.44 5.55 6.6
区别在于对齐方式:在Matlab中,列是右对齐的,而在Octave中它们没有对齐。
我希望在Octave中实现与Matlab完全相同的行为。你知道有什么解决方案吗?当然,我可以编写自己的函数,但也许已经存在解决方案。
编辑
另一个区别是如何处理多维数组。例如,
x = cat(3, magic(3), -magic(3));
fmt = '%.16g ';
y = num2str(x, fmt)
在Matlab中生成
y =
8 1 6 -8 -1 -6
3 5 7 -3 -5 -7
4 9 2 -4 -9 -2
在Octave中
y =
8 1 6
3 5 7
4 9 2
-8 -1 -6
-3 -5 -7
-4 -9 -2
即Matlab沿第二维连接3D切片,而Octave沿第一维连接。
num2str
的行为不同了! :-( - Luis Mendonum2str
函数的灵活性不是很高。为了更好地控制结果,请使用sprintf
(参见“格式化输出”)。" - Andras Deak -- Слава Україніnum2str
,并希望在Matlab和Octave上的行为保持一致。 - Luis Mendo