0
,我需要解决LSQR结果在很大程度上取决于权重
argmin||W*FT^-1(Ax)-W*p||
使用LSQR。 p是图像,x是k空间矩阵,A是矩阵,W是加权矩阵。为了将它们传递给MATLAB LSQR,我矢量P,X和W这是我的代码:
b=W.*p;
x=lsqr(@(x1,modo)FUNC(x1,W_vector,A,modo),b,tol,maxit);
X_k_lsqr=reshape(x,dim(1),dim(2),dim(3));
X_lsqr=real(ifftn(X_k_lsqr)).*MASK(:,:,:,1);
%%辅助功能
function [result modo]=FUNC(x1,W_vector,A,modo)
%Computes y=A*x for modo='notransp'
%Computes y=A'*x for modo='transp'
switch modo
case 'notransp'
res=A*x1;
R1=reshape(res,norient,dim(1)*dim(2)*dim(3));
for co=1:norient
R2(:,:,:,co)=reshape(R1(co,:),dim(1),dim(2),dim(3));
FR(:,:,:,co)=ifftn(R2(:,:,:,co));
aux=FR(:,:,:,co);
R3(co,:)=aux(:).';
end
result=W.*R3(:);
case 'transp'
RR1=reshape(x1./(W+eps),norient,dim(1)*dim(2)*dim(3));
for co=1:norient
RR2(:,:,:,co)=reshape(RR1(co,:),dim(1),dim(2),dim(3));
FRR(:,:,:,co)=fftn(RR2(:,:,:,co));
aux=FRR(:,:,:,co);
RR3(co,:)=aux(:).';
end
result=A'*RR3(:);
end
end
与W出现在最小化问题的两个方面,我会期待我得到的图像在W值上几乎是独立的。如果我改变W,图像在外观上看起来是相同的,但其值依赖于W.我不知道我的代码是否有问题。我应该为不同的W获得几乎相同的值吗? 非常感谢您的帮助。
编辑:我添加了一个初始的猜测,现在结果不依赖W.有谁知道为什么?
我检查了这个标志,它是0,但结果仍然取决于W.例如:对于W,获得的值在1e-2的范围内;对于10 * W他们在1e-4的范围内 – Marta
我希望,我可以产生同样的问题。我看到了只有次优解决方案的这种依赖关系。所以,在这种情况下,解决方案取决于初始猜测,权重和解算器公差。我不确定,但你的答案意味着这个W操纵解算器精度,正如我在前面的答案中所说的那样。因此,解算器停止残留容量接近W *的地方。 – Winsoft
我添加了一个初始猜测,现在结果不依赖于W.我仍然没有获得我希望的结果,但至少这个问题似乎已经解决了。谢谢! – Marta