我正在将一个 Matlab 函数翻译成 Python。不幸的是,我不是 Matlab 专家,我很难理解一些行,例如这一行:
a = [[0, 1]; [2, 3]]
bsxfun(@rdivide, sqrt(a), a)
我还没有真正理解它,但我认为这条线确实
r / a
对于 sqrt(a) 的每一行 r (或者是每一列?)并且 r / sqrt(a) 通常可以转换为 numpy 为
numpy.linalg.solve(sqrt(a).T, r.T).T
问题是:Matlab 说结果是
NaN 1.00000
0.70711 0.57735
numpy 说是
[ 1. 0.]
[ 0.55051026 1.41421356]
这是由
for i in range(2): print linalg.solve(sqrt(a).T, a[i, :].T).T
错误在哪里?矩阵 sqrt(a) 和 a 只是示例。您可以用任何其他矩阵替换它们。我只是想了解 bsxfun 对 rdivide 的作用。