MATLAB稀疏表示算法

MATLAB稀疏表示算法

ID:44912114

大小:20.05 KB

页数:3页

时间:2019-11-04

MATLAB稀疏表示算法_第1页
MATLAB稀疏表示算法_第2页
MATLAB稀疏表示算法_第3页
资源描述:

《MATLAB稀疏表示算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、functionA=OMP(D,X,L)%输入参数:%   D-过完备字典,注意:必须字典的各列必须经过了规范化%   X-信号%   L-系数中非零元个数的最大值(可选,默认为D的列数,速度可能慢)%输出参数:%   A-稀疏系数ifnargin==2  L=size(D,2);endP=size(X,2);K=size(D,2);fork=1:1:P,  a=[];  x=X(:,k);  residual=x;  indx=zeros(L,1);  forj=1:1:L,    proj=D'*residual;    [maxVal,pos]=max(abs

2、(proj));    pos=pos(1);    indx(j)=pos;    a=pinv(D(:,indx(1:j)))*x;    residual=x-D(:,indx(1:j))*a;    ifsum(residual.^2)<1e-6      break;    end  end;  temp=zeros(K,1);  temp(indx(1:j))=a;  A(:,k)=sparse(temp);end;return;function[A,x]=KSVD(y,codebook_size,errGoal)%===================

3、===========%inputparameter% y-inputsignal% codebook_size-countofatoms%outputparameter% A-dictionary% x-coefficent%reference:K-SVD:AnAlgorithmforDesigningofOvercompleteDictionaries%     forSparseRepresentation,AharonM.,EladM.etc%==============================if(size(y,2)

4、 disp('codebook_sizeistoolargeortrainingsamplesistoosmall');%显示””  return;end%initialization[rows,cols]=size(y);%y的行、列数目分别赋值给rows、colsr=randperm(cols);%r为维度为cols的随机置换向量A=y(:,r(1:codebook_size));%将y的第(r的第1个到第“原子个数个”数)列提取出构成初始字典AA=A./repmat(sqrt(sum(A.^2,1)),rows,1);ksvd_iter=10;fork=1:k

5、svd_iter  %sparsecoding  ifnargin==2    x=OMP(A,y,5.0/6*rows);  elseifnargin==3    x=OMPerr(A,y,errGoal);  end  %updatedictionary  form=1:codebook_size    mindex=find(x(m,:));    if~isempty(mindex)%若mindex为空矩阵,则返回0      mx=x(:,mindex);      mx(m,:)=0;      my=A*mx;      resy=y(:,mindex

6、);      mE=resy-my;      [u,s,v]=svds(mE,1);      A(:,m)=u;      x(m,mindex)=s*v';    end  endend

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。