Исходный скрипт выполняет БПФ для прямоугольного импульса с различными фильтрами нижних частот.
Код: Выделить всё
rect=zeros(100,1);
ffrect=zeros(100,1);
for j=45:55
rect(j,1)=1;
end
frect=fft(rect);
frect=fftshift(frect);
for j = 1:4
klimlow=50-j*10
klimhigh=50+j*10
for k=1:100
if (k < klimlow) | (k > klimhigh)
ffrect(k,1) = 0;
else
ffrect(k,1)=frect(k,1);
end
end
rrect=ifft(ifftshift(ffrect));
plot(real(rrect))
ylim([-0.2 1.5])
foo=input('Press RETURN to proceed to the next rectangle pulse');
end
Вывод в Matlab
Я попробовал преобразовать скрипт в Python:
Код: Выделить всё
import numpy as np
import matplotlib.pyplot as plt
rect = np.zeros((100, 1))
ffrect = np.zeros((100, 1))
for j in range(45, 56):
rect[j, 0] = 1
frect = np.fft.fft(rect)
frect = np.fft.fftshift(frect)
for j in range(0, 5):
klimlow = 50 - j * 10
klimhigh = 50 + j * 10
for k in range(100):
if (k < klimlow) or (k > klimhigh):
ffrect[k, 0] = 0
else:
ffrect[k, 0] = frect[k, 0]
rrect = np.fft.ifft(np.fft.ifftshift(ffrect))
plt.figure()
plt.plot(np.real(rrect))
plt.ylim([-0.2, 1.5])
plt.show()
Вывод в Python
Есть идеи, что я сделал не так?
Подробнее здесь: https://stackoverflow.com/questions/777 ... -in-python
Мобильная версия