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

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)

我是如何全面搞砸的呢?

cha*_*pjc 5

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

>> norm(R,'fro')
ans =
          1.73203140271763
Run Code Online (Sandbox Code Playgroud)

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

  • FFS ......应该阅读文档.是的,这解决了它.谢谢. (2认同)

Amr*_*mro 5

要么在MATLAB中这样做:

>> norm(R,'fro')
Run Code Online (Sandbox Code Playgroud)

或者在Python中:

>>> np.linalg.norm(R,2)
Run Code Online (Sandbox Code Playgroud)