逆矩陣、偽逆矩陣、資料的壓縮和復原:這一塊知識雖然很簡單,但在光學各種實驗情況下經常用到,特此總結。
矩陣的乘法 (觀測矩陣):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(壓縮感知情況另外考慮 :
%測試偽逆 ma = 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
OpenCV求逆(偽逆)矩陣函式
double invert inputarray src,outputarraydst,int flags decomp lu 功能 用以求取乙個矩陣的逆或者偽逆。src 輸入,浮點型 32位或者64位 的m n的矩陣,當引數3的使用方法為decomp cholesky decomp lu deco...
OpenCV求逆(偽逆)矩陣函式
ouble invert inputarray src,outputarraydst,int flags decomp lu 功能 用以求取乙個矩陣的逆或者偽逆。src 輸入,浮點型 32位或者64位 的m n的矩陣,當引數3的使用方法為decomp cholesky decomp lu decom...
pinv 求矩陣的偽逆矩陣
pinv 求矩陣的偽逆矩陣 功能簡介 用於求矩陣的偽逆矩陣。語法格式 1 b pinv a 函式返回矩陣a的偽逆矩陣。如果矩陣a是可逆 非奇異 的,那麼pinv a 與inv a 的結果是一樣的,而且pinv比inv效率低。但如果矩陣a是奇異矩陣,則inv a 不存在,但pinv a 仍然存在,並表...