我正在把一个Matlab函数翻译成Python。不幸的是,我不是一个Matlab专家,我很难理解一些行,例如这一行:
a = [[0, 1]; [2, 3]]
bsxfun(@rdivide, sqrt(a), a)
我还不太明白,但我想这句台词能理解
^{pr2}$对于sqrt(a)的每行r(还是每列?)r/sqrt(a)通常可以翻译为numpy
numpy.linalg.solve(sqrt(a).T, r.T).T
问题是:Matlab说结果是
NaN 1.00000
0.70711 0.57735
纽比说是的
[ 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的作用。在
第一层是python代码的转换。在
但如果你想知道为什么要写代码:
给出结果
^{pr2}$因为
linalg.solve()
解一个线性矩阵方程,或一组线性标量方程。在所以代码
for i in range(2): print linalg.solve(sqrt(a).T, a[i, :].T).T
将解线性矩阵方程所以你会得到结果的
在纽比形状中}相同,所以你会得到答案。在
(2L,).T
和{因为你需要一个element-wise division,而不是矩阵的逆相乘,
numpy.linalg
不是你想要的。在相关问题 更多 >
编程相关推荐