逆矩阵、伪逆矩阵、数据的压缩和复原:这一块知识虽然很简单,但在光学各种实验情况下经常用到,特此总结。
矩阵的乘法 (观测矩阵):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.7032
ans =
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.9360
ans =
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.7202
ans =
0.7045 0.7584 0.6073 0.5426 1.0107 0.0920 0.2619 0.1060 0.2999 0.6264
版权声明:本文为tyfwin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。