在Matlab中mean()的奇怪行为

时间:2015-02-08 00:13:20

标签: matlab mean

我试图使用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计算所有列的平均值吗?

1 个答案:

答案 0 :(得分:2)

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

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