主要內容:html
一、MP算法算法
二、OMP算法ui
三、OMP算法的matlab實現url
四、OMP在壓縮感知和人臉識別的應用.net
內容:稀疏信號的表示(字典、稀疏係數)、MP算法、MP算法的缺點、OMP、OMP的實現htm
參考文章:http://blog.csdn.net/scucj/article/details/7467955blog
%A-稀疏係數矩陣
%D-字典/測量矩陣(已知)
%X-測量值矩陣(已知)
%K-稀疏度
function A=OMP(D,F,X,L)
X=double(X);
[n,P]=size(X);
[n,K]=size(D);
%按列操做,分別求出每一列對應的最相關的基
for k=1:P
%a:每一列對應的相關基的係數
a=[];
%取二維信號的每一列信號
x=X(:,k);
%初始殘差
residual=x;
%indx:索引集,L:測量次數
indx=zeros(L,1);
for j=1:L
%D轉置與殘差residual相乘,獲得residual與每一列的內積值
residual=double(residual);
D=double(D);
proj=D'*residual;
%找內積值最大值的位置,即最相關基的position
pos=find(abs(proj)==max(abs(proj)));
%若最大值不止一個,取第一個
pos=pos(1);
%位置存入索引集的第j值
indx(j)=pos;
%indx(1:j)表示第一列前j個元素
%pinv:Pseudoinverse僞逆矩陣,通常用於處理長方形矩陣的求逆
%獲得其相關基的對應係數,AD=X,A=inv(D)*X
%通常應該經過最小二乘來求
a=pinv(D(:,indx(1:j)))*x;
%繼續求殘差
residual=x-D(:,indx(1:j))*a;
end
%經過上面的循環,獲得第k列的相關基對應的索引位置
temp=zeros(K,1);
temp(indx)=a;
%只顯示非零值及其位置
%最終求得整個A,代入AD=X,便可求解
A(:,k)=temp;
end
R=A'*D';
R=uint8(R);
imshow(R);索引
參考如下文章:it
http://wenku.baidu.com/view/4e67448302d276a200292e53.htmlio
http://wenku.baidu.com/link?url=IVn0mBapYDtCfj_mVma6AU8C9ClbGYU4Y5u4Kq0-F-8vhMN_73fcjLrTwzidA1KtQkqj6FvPS6-YkALppqr_Z_8TDlUV2wKEIsdqPs-my1m
http://blog.csdn.net/celerychen2009/article/details/9257275