Я применяю БПФ для сигнала, записанного на частоте 25000 Гц. Сначала я применяю низкочастотный фильтр Баттерворта 3-го порядка с частотой среза 300 Гц. Затем БПФ применяется к возвращенному сигналу.
Код для фильтрации нижних частот выглядит следующим образом:
def butter_lowpass_filter(data, cutoff, fs, order):
nyq = 0.5 * fs
normal_cutoff = cutoff / nyq
# Get the filter coefficients
b, a = signal.butter(order, normal_cutoff, btype='low', analog=False)
y = signal.filtfilt(b, a, data)
return y
Когда я применяю и строю график БПФ сигнала, я получаю значения> 0 от -600 Гц до + 600 Гц. Я понимаю, что это, вероятно, потому что я нормализую частоту среза от частоты Найквиста. Код для расчета и построения частоты по оси X выглядит следующим образом:
fft_list= fft(low_pass_filtered_signal)
freq = fftfreq(len(fft_list),1/25000)
plt.figure(1)
plt.figure(figsize=(12,6))
plt.plot(freq,fft_list)
print (freq)
plt.xticks(np.arange(min(freq), max(freq)+1, 1000),rotation=45)
plt.show()
Моя проблема для фильтра нижних частот с частотой среза 300 Гц, имеет ли смысл иметь коэффициенты БПФ от -600 Гц до 600 Гц. Если нет, есть ли что-то, что я делаю неправильно в моем коде?