Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab到Python:用SVD求解系统_Python_Matlab_Numpy_Svd - Fatal编程技术网

Matlab到Python:用SVD求解系统

Matlab到Python:用SVD求解系统,python,matlab,numpy,svd,Python,Matlab,Numpy,Svd,我正在尝试将Matlab代码转换为Python代码 我被困住了 x = A\b; 其中A是2D数组(2257x456),其中b是1D数组(2257x1) 在Matlabx中输出的数组是1D数组(456x1) Matlab代码中还有一条注释,上面写着:%使用SVD解决系统问题 那么如何在Python中实现这一点呢 我尝试使用以下代码,但没有成功 x = np.linalg.lstsq(A,b) x = np.linalg.lstsq(A.T, b.T)[1].T x = A :\\ b # fo

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

我被困住了

x = A\b;
其中
A
是2D数组
(2257x456)
,其中
b
是1D数组
(2257x1)

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

Matlab代码中还有一条注释,上面写着:
%使用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

您需要
np.linalg.lstsq(A,b)
。再看一下,注意它返回四个值。所以要使用它,你需要写

x, residuals, rank, s = np.linalg.lstsq(A,b)
或者,如果要忽略除
x
之外的所有内容

x = np.linalg.lstsq(A,b)[0]

您需要
np.linalg.lstsq(A,b)
。再看一下,注意它返回四个值。所以要使用它,你需要写

x, residuals, rank, s = np.linalg.lstsq(A,b)
或者,如果要忽略除
x
之外的所有内容

x = np.linalg.lstsq(A,b)[0]

“…没有成功。”解释你遇到的问题。你有错误吗?如果是,则显示错误消息。你有没有得到一个意想不到的结果?如果是这样,展示你得到了什么,并解释你的期望。(使用较小的数组测试代码可能更简单,例如A可能是10x5和b 10x1。)更新问题,我不太理解Matlab中操作背后的数学,所以我只是尝试代码并检查输出数组('x')是否相同。“…没有成功。”解释您遇到的问题。你有错误吗?如果是,则显示错误消息。你有没有得到一个意想不到的结果?如果是这样,展示你得到了什么,并解释你的期望。(使用较小的数组测试代码可能更简单,例如A可能是10x5和b 10x1。)更新问题,我不太理解Matlab中操作背后的数学,所以我只是尝试代码并检查输出数组('x')是否相同。感谢您的解释,但结果与Matlab中的不一样。我猜“x”的计算结果与使用lstsq()函数的Matlab中的计算结果不同?请注意,A和b在Python和Matlab中是相同的。谢谢您的解释,但结果与Matlab中的不同。我猜“x”的计算结果与使用lstsq()函数的Matlab中的计算结果不同?请注意,A和b在Python和Matlab中是相同的