MATLAB код:Невозможно преобразовать MATLAB в коде Python для repmat и симметрии
n = 2048;
d = 1;
order = 2048;
nn = [-(n/2):(n/2-1)]';
h = zeros(size(nn),'single');
h(n/2+1) = 1/4;
odd = mod(nn,2) == 1;
h(odd) = -1 ./ (pi * nn(odd)).^2;
f_kernel = abs(fft(h))*2;
filt = f_kernel(1:order/2+1)';
w = 2*pi*(0:size(filt,2)-1)/order;
filt(w>pi*d) = 0;
filt = [filt , filt(end-1:-1:2)];
filt = repmat(filt',[1 1024]);
Python код:
import numpy as np
import numpy.matlib
from numpy.matlib import repmat
d = 1
filt_length = 2048
nn = np.linspace(-1024,1023,2048)
nn = np.transpose(nn)
h = np.zeros((2048))
h[1024] = 0.25
odd = (nn%2)
for i in range(0,2048) :
if odd[i] == 1 :
h[i] = -1/((np.pi*nn[i])**2)
f_kernel = abs(fft(h))*2
filt = np.transpose(f_kernel[0:1024])
w = (np.pi)*np.linspace(0,1,1025)
Однако я не смог преобразовать последние 3 строки кода MATLAB для Python. Какие-либо предложения? Второй последний шаг кода MATLAB создает рамп-фильтр размером 2048 (идет от 0 до 1 с шагом 1024 и от 1 до 0 в других 1024 шагах). Последний repmat делает размер фильтра равным (2048, 1024).