omp算法求稀疏系数matlab,MP算法、OMP算法及其在人脸识别的应用

主要内容:

1、MP算法

2、OMP算法

3、OMP算法的matlab实现

4、OMP在压缩感知和人脸识别的应用

一、MP(Matching Pursuits)与OMP(Orthogonal Matching Pursuit)算法

内容:稀疏信号的表示(字典、稀疏系数)、MP算法、MP算法的缺点、OMP、OMP的实现

参考文章:http://blog.csdn.net/scucj/article/details/7467955

二、OMP的matlab实现

%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);

三、OMP在压缩感知和人脸识别的应用

参考以下文章:

http://wenku.baidu.com/view/4e67448302d276a200292e53.html

http://wenku.baidu.com/link?url=IVn0mBapYDtCfj_mVma6AU8C9ClbGYU4Y5u4Kq0-F-8vhMN_73fcjLrTwzidA1KtQkqj6FvPS6-YkALppqr_Z_8TDlUV2wKEIsdqPs-my1m

http://blog.csdn.net/celerychen2009/article/details/9257275

原文:http://www.cnblogs.com/AndyJee/p/3849200.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值