【发布时间】:2021-03-11 17:03:39
【问题描述】:
a = np.array([[0.1562,0.0774,0.0702]])
b = np.array([
[0.0365,0.0191,0.0217],
[0.0191,0.0331,0.0292],
[0.0217,0.0292,0.0591]])
MATLAB 中的输出(期望的输出)是:
4.4911 0.2724 -0.5958
我在 Python 中得到的输出是:
4.27945205 4.05235602 3.23502304
8.17801047 2.33836858 2.40410959
7.19815668 2.65068493 1.18781726
我在 Python 中使用的代码是:
a/b
我也尝试过np.divide(a,b),但它们都给出了相同的输出,这不是我想要的。 MATLAB 中的 '/' vs './' 有什么问题吗
我在 Python 中的代码应该是什么才能获得与 MATLAB 中相同的输出?
【问题讨论】:
-
矩阵除法不存在。在 MATLAB 中,矩阵除法算子实际上是一个线性方程求解器。方程 AB=C 可以通过编写
A=C/B在 MATLAB 中求解 A。在 Python 中,您可能需要寻找求解线性方程组的函数。 -
@CrisLuengo 嗨,你是说 C = A/B 吗?
-
@Anonymous,
a的形状为 (1, 3),您指的是形状为 (3, 3) 的数组,但您显示的b的形状为(5, 5)。您能展示一下您使用的实际 3x3 矩阵吗? -
你可以使用
np.linalg.solve(b.T, a.T) -
是的,
numpy/是逐元素的,就像 MATLAB 的./一样(对于其他运算符,如.*和.+也是如此)。
标签: python matlab numpy matrix vector