Ast*_*rid 2 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
Run Code Online (Sandbox Code Playgroud)
然后在MATLAB中:
>> norm(R)
ans =
1
Run Code Online (Sandbox Code Playgroud)
但在Python中
from scipy.linalg import norm
import numpy as np
print norm(R),np.linalg.norm(R)
1.73205080757 1.73205080757
Run Code Online (Sandbox Code Playgroud)
哪里
print scipy.__version__,np.__version__
0.14.0 1.9.0
Run Code Online (Sandbox Code Playgroud)
我是如何全面搞砸的呢?
Python正在回归Frobenius规范.您可以在MATLAB中执行以下操作:
>> norm(R,'fro')
ans =
1.73203140271763
Run Code Online (Sandbox Code Playgroud)
默认情况下,norm给出2-norm(norm(R,2)).
要么在MATLAB中这样做:
>> norm(R,'fro')
Run Code Online (Sandbox Code Playgroud)
或者在Python中:
>>> np.linalg.norm(R,2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |