在比较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我是怎么把事情搞砸的?
发布于 2014-10-31 17:36:58
Python正在返回Frobenius规范。您可以通过以下方法在MATLAB中完成这一任务:
>> norm(R,'fro')
ans =
1.73203140271763默认情况下,norm给出了2-范数(norm(R,2)).
发布于 2014-10-31 17:41:03
要么在MATLAB中这样做:
>> norm(R,'fro')或者在Python中:
>>> np.linalg.norm(R,2)发布于 2014-10-31 17:41:12
Matlab默认的矩阵范数是2-范数,而numpy是矩阵的Frobenius范数的默认值。显式地指定规范应该会为您修复它。
https://stackoverflow.com/questions/26680412
复制相似问题