Matlab到Python:使用SVD求解系统

2024-04-24 22:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将Matlab代码转换为Python代码。在

我被困在

x = A\b;

其中A是2D数组(2257x456),其中{}是1D数组{}。在

Matlab中输出的数组x是1D数组(456x1)

在Matlab代码中也有一个注释,它说:%Solve the system using SVD

那么,如何用Python实现这一点呢?在

我尝试使用以下代码,但没有成功。在

^{pr2}$

更新:

产生的错误和结果:

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

Tags: the代码isnp数组arraysystemdimensions
1条回答
网友
1楼 · 发布于 2024-04-24 22:23:41

你想要np.linalg.lstsq(A,b)。再看一下docstring,注意它返回四个值。所以为了使用它,你应该写

x, residuals, rank, s = np.linalg.lstsq(A,b)

或者,如果您想忽略除x之外的所有内容

^{pr2}$

相关问题 更多 >