2014-10-31 72 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範。明確指定規範應該爲您解決它