2014-03-28 64 views
1

我想將一段MATLAB代碼轉換爲python。的MATLAB代碼是在MATLAB和Python中的數組操作

for o = 1:orient    
     for s = 1:scale 

      M(:,:,s) = ifft2(imfft .* filter{s,o}); 

      s_lc(:,:,o) = s_lc(:,:,o).*(M(:,:,s).^w(s)); 

     end 

    end 

其中, 定向= 8, 規模= 3, W = [1,-3,2], imfft = imfft2(圖像), '過濾器' 是一個細胞陣列矩陣元素,每個矩陣是「圖像」的大小

我已經寫在python的等效代碼,它看起來像的,

for o in range(orient): 
    for s in range(scale): 
     M[:,:,s] = np.fft.ifft2 (imfft * filter[s][o]) 
     s_lc[:,:,o] = (s_lc[:,:,o])*((M[:,:,s])**w[s]) 

這裏所有的輸入變量保持相同的保存數值爲MATLAB。但是s_lc的值與完整迭代後的MATLAB不一樣。

有人可以幫助我在上面的代碼片段中複製Python的MATLAB中相同的功能嗎?

回答

0

我想你在做什麼是完全正確的。但是,MATLAB和numpy不同地表達多維數組。如果您使用的是rank-3陣列,請比較python的s_lc[i,j,k]和MATLAB元素的s_lc(i+1,j+1,k+1)