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