使用MATLAB和Python规范函数获得不同的答案

时间:2014-10-31 17:35:00

标签: python matlab numpy matrix scipy

在比较MATLAB和Python函数时,关于简单矩阵规范,我得到了两个截然不同的答案。

R =

    0.9940    0.0773   -0.0773
   -0.0713    0.9945    0.0769
    0.0828   -0.0709    0.9940

然后在MATLAB中:

>> norm(R)

ans =

     1

但是在Python中

from scipy.linalg import norm
import numpy as np

print norm(R),np.linalg.norm(R)

1.73205080757 1.73205080757

,其中

print scipy.__version__,np.__version__
0.14.0 1.9.0

我是如何全面搞砸的呢?

3 个答案:

答案 0 :(得分:5)

Python正在返回Frobenius规范。您可以在MATLAB中执行以下操作:

>> norm(R,'fro')
ans =
          1.73203140271763

默认情况下,norm给出2范数(norm(R,2))。

答案 1 :(得分:5)

要么在MATLAB中执行此操作:

>> norm(R,'fro')

或Python中的这个:

>>> np.linalg.norm(R,2)

答案 2 :(得分:2)

矩阵范数的Matlab默认值是2范数,而scipy和numpy默认为矩阵的Frobenius范数。明确指定规范应该为你解决