Hii!
Ich bin grade an dem Versuch dran ein kleines ML Modell zu erstellen und möchte dies mit Audiosignalen realisieren.
Der einzige Unterschied der Audiosignale liegt in einem bestimmten Freuquenzbereich und ist über FFT Magnitude erkennbar.
Den Plot habe mich mithilfer der def. plot_sepctrum und der bestimmten Frequenzachse realisiert.:
def plot_spectrum(y,sr):
samples=len(y)
spec=abs(np.fft.fft(y))
freq_axis=np.arange(float(samples))*sr/samples
plt.plot(freq_axis[0:round(samples/2)],20*np.log10(spec[0:round(samples/2)]))
plt.xlim( [2000, 3500] )
plt.xticks( range(2000,3500,100) )
plt.xlabel('Frequency in Hz')
plt.title('FFT Magnitude in dB')
Aus diesem Plot, benötige ich jetzt das Minimum in gewähltem Frequenzbereich und das Maximum gewähltem Frequenzbereich (am liebsten dann auch als plot ''eingezeichnet''). Leider bin ich bisher jedes mal gescheitert. Ich habe bisher nicht verstanden, wie ich in einen Plot andere Funktionen oder Plots einfügen/einbeziehen kann.
In der Folge muss die Steigung zwischen der beiden Min Max Punkte berechnet werden.
Danke sehr für eure Hilfe!
in Plot lokales Min und Max heraus finden
Du musst dein Spektrum nicht direkt zeichnen, sondern erstmal in einer Variablen ablegen. Dann kannst du damit auch arbeiten. Mit dem plot selbst arbeitet man nicht. Und wenn du dann Maxima/Minima und was nicht ermittelt hast, kannst du die auch zB mit plt.scatter einzeichnen.
-
- User
- Beiträge: 510
- Registriert: Mittwoch 13. November 2019, 08:38
Um die Extrema zu finden kannst du das hier verwenden: https://docs.scipy.org/doc/scipy/refere ... peaks.html.