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 正在正确执行计算,但显示的默认数字格式(短固定)使 3
和 9
看起来是 0
,因为其他数字很大。
您可以使用 format
更改格式。
当您将其更改为短指数格式时,您会得到 Octave 的输出(因为它显然具有不同的默认值):
>> format shorte;
>> mean(Z)
ans =
2.0347e+03 4.2489e+06 3.0000e+00 9.0000e+00
我正在尝试使用 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 正在正确执行计算,但显示的默认数字格式(短固定)使 3
和 9
看起来是 0
,因为其他数字很大。
您可以使用 format
更改格式。
当您将其更改为短指数格式时,您会得到 Octave 的输出(因为它显然具有不同的默认值):
>> format shorte;
>> mean(Z)
ans =
2.0347e+03 4.2489e+06 3.0000e+00 9.0000e+00