首頁>Program>source

我需要將下面顯示的代碼塊轉換為Python.我建立了两个名為 u的陣列 和 v 分別將它们放在for迴圈中,範圍从0到M-1,我知道 find 与if條件類似.我有一个問题,因為两个 idxu 是陣列。

MATLAB代碼是這樣的:

u = 0:(M-1); 
v = 0:(N-1); 
idx = find(u > M/2); 
u(idx) = u(idx) - M; #I have a problem here
idy = find(v > N/2); 
v(idy) = v(idy) - N;

基本上,我在Python中所做的工作直到出現問题行為止:

input_image = Image.open('./....image....')
input_image=np.array(input_image)
M,N = input_image.shape[0],input_image.shape[1]
FT_img = fftpack.fftshift(fftpack.fft2(input_image))
# Assign the order value 
n = 2; # one can change this value accordingly 
  
# Assign Cut-off Frequency 
D0 = 60; # one can change this value accordingly 
  
# Designing filter 
u=[]
v=[]
for i in range(M-1):
  u.append(i)
for i in range(N-1):
  v.append(i)
最新回復
  • 5月前
    1 #

    您的MATLAB代碼

    u = 0:(M-1);
    idx = find(u > M/2);
    u(idx) = u(idx) - M;
    
    通過省略 find可以更有效地實現

    u = 0:(M-1);
    idx = u > M/2;
    u(idx) = u(idx) - M;
    

    這種形式可以通過NumPy轻松轉換為Python:

    u = np.arange(0, M)
    idx = u > M/2
    u[idx] = u[idx] - M
    

  • PyTHON:如何在不使用pandas或numpy的情况下計算資料幀的相關矩陣?
  • javascript:滚動條上的突出顯示選單項不起作用