在处理稀疏矩阵时,matlab 中的矩阵求逆很困难
Matrix inversion is difficult in matlab when deal with sparse matrix
我实现了一个与稀疏矩阵求逆相关的算法。
代码:
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))*F_x*phi_t;
我在matlab中写下了代码。它给我一个警告 Matrix is close to singular or badly scaled。结果可能不准确。 RCOND = 4.419037e-18.。但根据我的算法,矩阵求逆是重要的部分。所以,我正在尝试为矩阵搜索一些有效的方法 inversion.So 我发现了这个 link 如何准确计算矩阵的逆?
所以我按照建议更改了我的代码。
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;
之后我得到一个错误 Error using \
矩阵维度必须一致。
EKF_SLAM_known 错误(第 105 行)
kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))\F_x*phi_t;
我使用的算法是
这里算法的第8行相当于代码kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))F_xphi_t;
我应该如何处理我的代码才能消除此警告。
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;
应该是
kapa_t=phi_t*F_x'*((inv(R_t)+F_x*phi_t*F_x')\F_x)*phi_t;
当A
为正方形时,A \ B
运算符大致等同于inv(A) * B
,因此您不需要外部inv
.
我实现了一个与稀疏矩阵求逆相关的算法。
代码:
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))*F_x*phi_t;
我在matlab中写下了代码。它给我一个警告 Matrix is close to singular or badly scaled。结果可能不准确。 RCOND = 4.419037e-18.。但根据我的算法,矩阵求逆是重要的部分。所以,我正在尝试为矩阵搜索一些有效的方法 inversion.So 我发现了这个 link 如何准确计算矩阵的逆?
所以我按照建议更改了我的代码。
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;
之后我得到一个错误 Error using \ 矩阵维度必须一致。
EKF_SLAM_known 错误(第 105 行) kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))\F_x*phi_t;
我使用的算法是
这里算法的第8行相当于代码kapa_t=phi_tF_x'(inv(inv(R_t)+F_xphi_tF_x'))F_xphi_t;
我应该如何处理我的代码才能消除此警告。
kapa_t=phi_t*F_x'*(inv(inv(R_t)+F_x*phi_t*F_x'))\F_x*phi_t;
应该是
kapa_t=phi_t*F_x'*((inv(R_t)+F_x*phi_t*F_x')\F_x)*phi_t;
当A
为正方形时,A \ B
运算符大致等同于inv(A) * B
,因此您不需要外部inv
.