2016-02-25 39 views
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.有誰知道爲什麼?

回答

1

問題:你檢查過國旗嗎?你確定你使用的結果,而國旗是0?一個論點:我可以假設W也是一個開關,它決定了我希望最小化p的哪些組件。如果W *(Ax-b)真的等於0,那麼你是對的,但在這裏我們知道沒有一個精確的解決方案,它變成W *(Ax-b)W *公差。所以,你要根據W的元素和容差算法的終點。

+0

我檢查了這個標誌,它是0,但結果仍然取決於W.例如:對於W,獲得的值在1e-2的範圍內;對於10 * W他們在1e-4的範圍內 – Marta

+0

我希望,我可以產生同樣的問題。我看到了只有次優解決方案的這種依賴關係。所以,在這種情況下,解決方案取決於初始猜測,權重和解算器公差。我不確定,但你的答案意味着這個W操縱解算器精度,正如我在前面的答案中所說的那樣。因此,解算器停止殘留容量接近W *的地方。 – Winsoft

+0

我添加了一個初始猜測,現在結果不依賴於W.我仍然沒有獲得我希望的結果,但至少這個問題似乎已經解決了。謝謝! – Marta

相關問題