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