function x = NQP(D,y,W,lambda,sigma)
b=lambda*(1+W');
[n,K]=size(D);
%x = OMPerr(D,y,sigma);
x=zeros(K,1);x(1,1)=1;
x =x*mean(y);
Er = sigma^2*n;
residual=y-D*x;
currResNorm = sum(residual.^2);    
maxNumCoef = n/2;
i=0;
while currResNorm >= Er && i < maxNumCoef
    x=x.*(D'*y)./(D'*D*x+b);
    in = find(x<mean(x));
x(in)=0;
    residual=y-D*x;
    currResNorm = sum(residual.^2);
    i=i+1;
end
