閱讀167 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MP 算法 matlab實現


同學委托寫個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


最後更新:2017-04-03 18:51:50

  上一篇:go JavaScript trim函數
  下一篇:go Twitter 工程師眼中的新浪微博