Matlab 中 mean() 的奇怪行为

Strange behaviour of mean() in Matlab

我正在尝试使用 Matlab 计算矩阵的每列均值并看到奇怪的行为。

Matlab 计算第一列和第二列的 mean(),但不计算其余列。

示例:

    >> Z = [2104 4426816 3 9; 1600 2560000 3 9; 2400 5760000 3 9]

Z =

        2104     4426816           3           9
        1600     2560000           3           9
        2400     5760000           3           9

>> mean(Z)

ans =

   1.0e+06 *

    0.0020    4.2489    0.0000    0.0000

>> mean(Z(1:2,:))

ans =

        1852     3493408           3           9

相同的代码使用 Octave 可以完美运行:

octave:36> Z = [2104 4426816 3 9; 1600 2560000 3 9; 2400 5760000 3 9]
Z =

      2104   4426816         3         9
      1600   2560000         3         9
      2400   5760000         3         9

octave:37> mean(Z)
ans =

   2.0347e+03   4.2489e+06   3.0000e+00   9.0000e+00

我的代码有问题吗? 知道如何使用 Matlab 计算所有列的平均值吗?

MATLAB 正在正确执行计算,但显示的默认数字格式(短固定)使 39 看起来是 0,因为其他数字很大。 您可以使用 format 更改格式。 当您将其更改为短指数格式时,您会得到 Octave 的输出(因为它显然具有不同的默认值):

>> format shorte;
>> mean(Z)
ans =
2.0347e+03   4.2489e+06   3.0000e+00   9.0000e+00