如何在Matlab中停止给零非常小的值?

时间:2017-02-01 20:29:35

标签: matlab matrix rounding precision

假设我有一个矩阵M(3x3)

1.15740740740741e-17    1.15740740740741e-18    0.0100000000000000
1.15740740740741e-17    1.15740740740741e-18    1
1.15740740740741e-17    1.15740740740741e-18    0.1

如果输出M(1,1:2),则为

ans =
   1.0e-16 *
   0.115740740740741   0.011574074074074

但是,如果我做M(1,1:3)

,它给前两列提供零
ans =
   0.000000000000000   0.000000000000000   0.010000000000000

不确定如何阻止这种情况发生。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要使用format*G版本,它允许显示格式自适应并使用最适合每个元素的格式。有两种变体

format shortG

%   1.1574e-17   1.1574e-18         0.01
%   1.1574e-17   1.1574e-18            1
%   1.1574e-17   1.1574e-18          0.1

format longG

%      1.15740740740741e-17      1.15740740740741e-18                      0.01
%      1.15740740740741e-17      1.15740740740741e-18                         1
%      1.15740740740741e-17      1.15740740740741e-18                       0.1