跪求omp算法的matlab代码,用于稀疏编码的!

%A-稀疏系数矩阵%D-字典/测量矩阵(已知)%X-测量值矩阵(已知)%K-稀疏度%L-themaximalnumberofcoefficientforrepresent... %A-稀疏系数矩阵
%D-字典/测量矩阵(已知)
%X-测量值矩阵(已知)
%K-稀疏度
%L-the maximal number of coefficient for representation
function A=OMP(D,X,L)
[n,P]=size(X);
[n,K]=size(D);
for k=1:1:P
a=[];
x=X(:,k);
residual=x;%残差
indx=zeros(L,1);%索引集
for j=1:1:L
proj=D'*residual;%D转置与residual相乘,得到与residual与D每一列的内积值
pos=find(abs(proj)==max(abs(proj)));%找到内积最大值的位置
pos=pos(1);%若最大值不止一个,取第一个
indx(j)=pos;%将这个位置存入索引集的第j个值
a=pinv(D(:,indx(1:j)))*x;%indx(1:j)表示第一列前j个元素
residual=x-D(:,indx(1:j))*a;
end
temp=zeros(K,1);
temp(indx)=a;
A(:,k)=temp;%只显示非零值及其位置
end
return

这里有一个代码,但是老是运行有错误,
Error using OMP (line 6)
Not enough input arguments.
请问是怎么回事啊?
展开
 我来答
百度网友3c63e6c
2014-04-10 · TA获得超过2848个赞
知道大有可为答主
回答量:3829
采纳率:68%
帮助的人:2786万
展开全部
你要从工作空间调用这个函数,OMP之后要输入参数的。。。
追问
你好,也就是说这个函数不能直接调用的是吗?函数本身是没有问题的对吗?
追答
对,你调用要加上参数 OMP(1,2,3)这种形式
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式