2014-10-31 74 views
2

比较MATLAB和Python函数时,我得到了两个截然不同的简单矩阵规范答案。使用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 

我是如何设法如此全面地解决这个问题的?

回答

5

Python正在返回Frobenius规范。你可以这样做在MATLAB:

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

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

+2

FFS ...应阅读文档。是的,解决了它。谢谢。 – Astrid 2014-10-31 17:39:39

5

做这一点在MATLAB:

>> norm(R,'fro') 

或这在Python:

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

Matlab的默认矩阵范而SciPy的和numpy的默认到弗罗比尼斯范数为矩阵的2范。明确指定规范应该为您解决它