我想將Matlab代碼轉換爲Python代碼。Matlab to Python:使用SVD解決系統
我堅持
x = A\b;
其中A
是2D陣列(2257x456)
並且其中b
是一維數組(2257x1)
。
在Matlab x
outputed該數組是一維數組(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中操作背後的數學,所以我只是嘗試使用代碼並檢查if輸出數組('x')是相同的。 – TomazStoiljkovic