MP 算法 matlab实现

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 00:01   409   0


同学委托写个MP算法,找了一堆资料都没找到好用的,全是OMP什么的,自己记下来以后自用

MP算法的介绍这篇博客介绍的很清楚

MP算法的关键就在于要归一化,matlab第一次用,搞了好久才搞定


function a=mp(y,phi,K,iware)
[~,N]=size(phi);
a = zeros(N,1);
for i = 1:N  %原子归一化
    phi(:,i) = phi(:,i)/norm(phi(:,i));
end
v =y; %初始残差
numIts = 0;
iware=2*iware;
while numIts<iware; %迭代计数
      numIts = numIts + 1;                               
      g=phi'*v; %计算内积
      [~,pos]=max(abs(g)); %选取最大的作为最匹配原子
      a(pos)=a(pos)+g(pos);  %记录位置
      v = v -g(pos)*phi(:,pos); %更新残差
      
end 
a=a/iware; 
end


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP