矩陣違逆的求法

2021-08-20 17:36:51 字數 971 閱讀 2911

① 直接求解:

求導,令導數為0,結果如下: inva=(ata)-1at

% 直接求偽逆
inva = inv(a'*a)*a';

② svd求解

%% svd分解求偽逆
% 原理和公式:1. svd分解得到的矩陣:u和v是正交陣,s是對角陣
%            2. 正交陣的逆=轉置
%            3. 對角陣的逆=非零元素求倒
% step1: 求解a的svd分解
[u,s,v] = svd(a); % a = u*s*v'
% step2: 將s中的非零元素求倒
t=s;
t(find(s~=0)) = 1./s(find(s~=0));
% step3: 求inva
svdinva = v * t' * u';

③ qr求解

%% qr分解求偽逆
% 適用於稀疏矩陣
% 原理和公式:1. qr分解得到的矩陣:q是正交陣,r是非奇異上三角陣
%            2. 正交陣的逆=轉置
%            3. 上(下)三角矩陣的逆也仍然是上(下)三角矩陣。不必用高斯消去法,向前替換法解方程。
%               但是具體的我不知道怎麼用程式來寫,這裡仍舊用了matlab的函式。
[q,r] = qr(a);
invr =  inv(r'*r)*r';
qrinva =invr*q';

ps: 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,則稱該矩陣為稀疏矩陣(sparse matrix)

最小透視矩陣的求法

遇到很多時候,需要把透視矩陣最小化,以達到效能最優。比如要求 camera 只能看到乙個洞口裡的內容這樣其它的區域是不需要進行渲染的。這裡自己寫了乙個求最小透視矩陣的方法。第一步是先求出 camera 到box 中心的向量 veccb 定義從 box中心到四個頂點的向量,再求出其各自到 veccb ...

方陣的逆矩陣的求法

用高斯消元法求方陣逆矩陣 include includeusing namespace std int main cout 輸入矩陣 endl for int i 0 i row i for int j 0 j col j cin matrix i j cout n原矩陣為 endl for int...

灰度共生 共現 矩陣的求法

前段時間在寫關於影象的作業時,出現了灰度共生矩陣的求法問題。於是就上網查資料發現不是很理想,翻書查閱也是不同的書籍出現的解法也是不一樣,上別的課時老師也給我們講了下,但是發現與我所看到的資料上講的不一樣。經總結思考後算是明白了,現在就班門弄斧分享下自己的心得。至於灰度共生矩陣的用途,我只知道它在檢測...