【发布时间】:2016-11-22 01:05:31
【问题描述】:
我正在尝试将 Matlab 代码转换为 Python 代码。
我被困住了
x = A\b;
其中A 是二维数组(2257x456),其中b 是一维数组(2257x1)。
Matlab中输出的数组x是一维数组(456x1)
Matlab 代码中还有一条注释:%Solve the system using SVD
那么我如何在 Python 中做到这一点?
我尝试使用以下代码,但没有成功。
x = np.linalg.lstsq(A,b)
x = np.linalg.lstsq(A.T, b.T)[1].T
x = A :\\ b # found this [here][1]
x = np.linalg.solve(A,b)
[1]: https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html
更新:
产生的错误和结果:
x = np.linalg.solve(A,b) : LinAlgError: Last 2 dimensions of the array must be square
x = np.linalg.lstsq(A,b) : x is not expected result, it is 3D array (4x456x1)
x = np.linalg.lstsq(A.T, b.T)[1].T : LinAlgError: Incompatible dimensions
【问题讨论】:
-
"...没有成功。"解释你遇到的问题。你收到错误了吗?如果是这样,请显示错误消息。你有没有得到你没想到的结果?如果是这样,请展示您得到的结果并解释您的期望。 (使用较小的数组测试代码可能更简单,例如 A 可能是 10x5,b 可能是 10x1。)
-
更新问题,我不太了解 Matlab 中运算背后的数学原理,所以我只是在尝试代码并检查输出数组 ('x') 是否相同。