MatlabコードをPythonコードに変換しようとしています。MatlabからPythonへ:SVDを使用したシステムの解決
私は
A
が2次元配列
(2257x456)
、どこ
b
は、1次元配列
(2257x1)
である
x = A\b;
で立ち往生しています。
Matlabのx
にoutputed配列は1次元配列(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')は同じです。 – TomazStoiljkovic