Ich habe versucht, einen Bandpassfilter zu machen. Während ich daran arbeitete, bemerkte ich etwas Seltsames. Der Frequenzgang des Filters ist in Ordnung (scipy.signal.freqz). Aber wenn ich es auf ein Sinus-Signal anwendete, ändert sich die Form des Filters.Bandpass Filterform in Python
3 = Spektrum von Signal
4 = Frequenzgang des Filters nach freqz() Funktion
1 = Spektrum Filter angelegtes Signal
Schließlich warum die Form Filter (auch Magnitude) wird geändert, wenn es auf ein Signal angewendet wird?
from scipy.signal import butter, lfilter, buttord, freqz
import numpy as np
import matplotlib.pyplot as plt
import math
t = np.arange(0, 8192, 1)
data = 1+np.sin(.15*np.pi*t + np.pi/2)
b, a = butter(6, [0.35, 0.55], btype='band')
y = lfilter(b, a, data)
y = np.fft.rfft(y)
y = np.abs(y)
x = np.fft.rfft(data)
x = np.abs(x)
w, h = freqz(b, a, worN=4096)
plt.figure(1)
plt.plot(np.arange(0,4097,1),y)
plt.figure(2)
plt.plot(np.arange(0,8192,1), data)
plt.figure(3)
plt.plot(np.arange(0,4097,1), x)
plt.figure(4)
plt.plot(np.arange(0,4096,1),np.abs(h))
plt.show()
Können Sie den Code teilen, der diese Visualisierungen generiert hat? Ich denke, es wäre hilfreich. –
Der Code hinzugefügt, sorry meine Schuld – Reactionic