2014-01-09 62 views
1

我试图在Matlab中实现文件Reducing boundary artifact in image deconvolution available here如何在matlab中实现正则化最小二乘法

我遇到的问题是我不知道如何在matlab中实现本文描述的正则化最小二乘问题。

regularized least square problem

谁能给我一些建议吗?直到现在我发现了matlab 中的套索函数,但我不确定这是我需要的。谢谢。

+0

尝试配制它以矩阵形式像'分钟(|| X * W - ý|| + K * || ||瓦特)',等... – Serg

回答

2
A=double(A); 
[M,N]=size(A); 
Dm=eye(M); 
Dn=eye(N); 
Dxx=diff(Dm,2,1); % 2nd derivative 
Dyy=diff(Dn,2,1); 
LA=kron(Dxx,Dn)+kron(Dm,Dyy); %Laplacian operator 

I=eye(M*N); 
A1=zeros(size(A)); 
A1(1:alpha,:)=1; % alpha in formula (1) and (2) from paper, boundary margin 
A1(M-alpha:M,:)=1; 
B1=zeros(size(B));  % B is A' in the formula 
B1(1:alpha,:)=1; 
B1(M:M+alpha,:)=1; % B1 is A-A', boundary elements padded as the paper shows 

H=[LA;sqrt(lambda)*I(A1,:)]; % consolidate the laplacian operator in the 1st part and the norm in the 2nd part 
y=[zeros(size(LA,1),1);B(B1)]; % convert the original problem to a matrix equation Hx=y 
X=reshape(H\y, M,N); 
+0

有在第二行上的错误在A1被定义之后。你能否解释一下代码? – catalaur

+0

谢谢你的catalaur。现在修改代码。 – lennon310

+0

我将优化形式转换为矩阵方程。基本上,如果你试图优化| ax-b |^2 + | cx-d |^2,你就等价地求解[a; c] x = [b; d]。这就是H和Y如何在代码中形成的。边界相减可能会进一步修改(可能在更好地理解论文之后),但是提出了将最优化作为矩阵方程形式的基本方法 – lennon310