in Plot lokales Min und Max heraus finden

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
pybee
User
Beiträge: 5
Registriert: Mittwoch 13. Oktober 2021, 07:08

Mittwoch 13. Oktober 2021, 08:05

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!
__deets__
User
Beiträge: 10485
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 13. Oktober 2021, 09:52

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.
einfachTobi
User
Beiträge: 369
Registriert: Mittwoch 13. November 2019, 08:38

Mittwoch 13. Oktober 2021, 17:54

Um die Extrema zu finden kannst du das hier verwenden: https://docs.scipy.org/doc/scipy/refere ... peaks.html.
Antworten