2015-07-21 24 views
0

我正在嘗試做一個具有矩陣的雙重整合。當我運行它時,它不顯示任何結果。它也沒有顯示任何錯誤。它只是無盡的運行,沒有任何輸出。我不認爲當我使用'for'時,無限循環會成爲問題。是否因爲有四個'for'循環,系統無法做到這一點?以下是我的代碼:無法顯示結果或錯誤的Python程序

f = np.zeros((1024,90)) 

    D = 0.28     
    h = np.zeros(1024) 
    h[0:512] = np.linspace(0,1,512) 
    h[513:] = np.linspace(1,0,511) 

    for r in range(0,1024) : 
     for phi in range(0,90) : 
     for b in range(0,360) : 
      for s in range(0,1024) : 
      U = (D + r*sin(b-phi))/D 
      l = math.pow(U,-2) 
      k = D/(math.pow((math.pow(D,2)+math.pow(s,2)),0.5)) 
      f[r,phi] = 0.5*l*k*q[s,b]*h[s] 

    I =np.zeros((725,725)) 

    for x in range(0,725) : 
     for y in range(0,725) : 
     r = math.pow(x,2)+math.pow(y,2) 
     phi = math.degrees(math.atan(y/x)) 
     I[x,y] = f[r,phi] 

    I8 = (((I - I.min())/(I.max() - I.min())) * 255.9).astype(np.uint8) 
    img = Image.fromarray(I8) 
    img.save("Fanbeamreconstruction.png") 
    im = Image.open("Fanbeamreconstruction.png") 
    im.show() 

任何幫助或建議,將不勝感激。謝謝!

+0

您期待什麼輸出?你不會在你的代碼中做任何'打印'。 – Mel

+0

我期待矩陣的灰度圖像I. –

回答

1

quadruple for循環將運行1024 * 90 * 360 * 1024 =總共約340億次迭代。這可能需要一段時間才能完成;)

此外,您沒有任何輸出指令在您提供的代碼中,所以它不應該給出任何輸出。

+0

我在這裏編輯了代碼。所以理想情況下需要多少時間來顯示輸出。我們如何確保它不是因爲代碼中的錯誤? –

+1

要進行快速檢查,您可以在for循環中添加一些'print'語句 - 然後您會看到執行是否卡在某處以及計算需要多長時間。如果這顯示任何問題,我想最好使用調試器。 – ebvalaim

0

是的。內部循環應執行339億次。