欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

逆矩阵、伪逆矩阵:数据的压缩和复原

发布时间:2025/4/16 编程问答 74 豆豆
生活随笔 收集整理的这篇文章主要介绍了 逆矩阵、伪逆矩阵:数据的压缩和复原 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

逆矩阵、伪逆矩阵、数据的压缩和复原:这一块知识虽然很简单,但在光学各种实验情况下经常用到,特此总结。

 

矩阵的乘法 (观测矩阵):C = A* B

C:M*1

A:M*N

B:N*1

A可以理解为一个转化矩阵,或者说 观测矩阵。

矩阵B在观测矩阵A上,观察到的效果是矩阵C

这个思想在物理思想上非常重要,尤其是光学。

实际生活中,往往我们需要通过观测矩阵(A)和观察到的结果(C),来求出原矩阵(B)

也就是解非线性齐次方程,M个方程,N个未知数。

 

求逆矩阵当矩阵A必须是方阵的时候,A才是可逆矩阵,这时M=N,有唯一解,B = inv(A) * C,matlab中测试如下。

%测试逆矩阵 A = rand(10,10); B = rand(10,1); C = A*B; BB = inv(A)*C; B' BB'结果:ans =0.0986 0.1420 0.1683 0.1962 0.3175 0.3164 0.2176 0.2510 0.8929 0.7032ans =0.0986 0.1420 0.1683 0.1962 0.3175 0.3164 0.2176 0.2510 0.8929 0.7032

求伪逆矩阵:伪逆矩阵是逆矩阵的广义形式。由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。理解其实就是求不存在逆矩阵的逆矩阵。

M>N的时候,也就是说我们探测到的数据量大于原数据量,此时方程数量大于未知数数量,可以直接通过求伪逆求出矩阵B,B = pinv(A) * C

%测试伪逆,M > N A = rand(10,8); B = rand(8,1); C = A*B; BB = pinv(A)*C; B' BB'结果: ans =0.1375 0.3900 0.9274 0.9175 0.7136 0.6183 0.3433 0.9360ans =0.1375 0.3900 0.9274 0.9175 0.7136 0.6183 0.3433 0.9360

N>M的时候,也就是说我们探测到的数据量大于原数据量,此时方程数量小于未知数数量,方程没有唯一解,不能通过B = pinv(A) * C 求出B(压缩感知情况另外考虑 :https://blog.csdn.net/tyfwin/article/details/88902091)

%测试伪逆 M<N A = rand(8,10); B = rand(10,1); C = A*B; BB = pinv(A)*C; B' BB'结果: ans =0.7360 0.7947 0.5449 0.6862 0.8936 0.0548 0.3037 0.0462 0.1955 0.7202ans =0.7045 0.7584 0.6073 0.5426 1.0107 0.0920 0.2619 0.1060 0.2999 0.6264

 

总结

以上是生活随笔为你收集整理的逆矩阵、伪逆矩阵:数据的压缩和复原的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。