[英]invert singular matrix on python
我必須從csv
文件中讀取多個數據,並且當我想從csv
數據中轉換矩陣時,我得到以下信息:
numpy.linalg.linalg.LinAlgError: singular matrix
和過程陷入這一部分:
J = np.mat([dtdx,dtdy,dtdz]).transpose()
dd = np.mat(ttcal-tt)
dm = (scipy.linalg.inv(J.transpose()*J))*((J.transpose())*(dd.transpose()))
以及來自“ J”的數據,如下所示:
[[-6.81477651e-03 -7.90320450e-03 6.50533437e-05]
[-6.71080644e-03 -6.00135428e-03 6.50533437e-05]]
以及來自“ dd”的數據,如下所示:
[[0.00621772 0.00537531]]
我已經檢查了這些數據,發現了:
tes = J.transpose()*J
結果是這樣的:
[[ 9.14761019e-05 9.41324993e-05 -8.79884397e-07]
[ 9.41324993e-05 9.84768945e-05 -9.04538042e-07]
[-8.79884397e-07 -9.04538042e-07 8.46387506e-09]]
我需要反轉這個矩陣,但是這個數據是奇異矩陣。 我必須嘗試在matlab r2017b上運行良好。
我需要在python上解決此問題。
如果您確定所進行的計算是正確的並且正是您想要的,那么您可以為所擁有的奇異矩陣求一個偽逆。
可以像這樣在python中完成。
mat = np.array([[ 9.14761019e-05, 9.41324993e-05, -8.79884397e-07],
[ 9.41324993e-05, 9.84768945e-05, -9.04538042e-07],
[-8.79884397e-07, -9.04538042e-07, 8.46387506e-09]])
p_inv = np.linalg.pinv(mat)
print(p_inv)
# output
array([[-1.00783988e+13, 5.50963966e+11, -9.88844703e+14],
[ 5.50963966e+11, -3.01194390e+10, 5.40580308e+13],
[-9.88844703e+14, 5.40580308e+13, -9.70207468e+16]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.