这就是ksvd和omp代码
立即下载
资源介绍:
这就是ksvd和omp代码
function [D1,X1]=ksvd(D,X,Y,m)%Y~=DX,m为稀疏度
[n,K]=size(D);
j=1;%迭代次数
D1=D;
X1=X;
E=Y-D1*X1;
[K,N]=size(X);
while j<1000&&norm(E,2)>1
tic
for k=1:K
Ek=Y-D1*X1+D1(:,k)*X1(k,:);
% W=find(X1(k,:));
% W1=zeros(N,length(W));
% W1(sub2ind(size(W1),W,1:1:length(W)))=1;%保留x=0的索引值
% Erk=Ek*W1;
% [u,s,v]=svds(Erk,1);
[u,s,v]=svds(Ek,1);
D1(:,k)=u;
% x_1=s.*v';
% X1(k,:)=x_1*W1';
end
X1=zeros(K,N);
for k=1:N
X1(:,k)=OMP(Y(:,k),D1,m,0.1,2);
end
toc
E=Y-D1*X1;
j=j+1;
end
end