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