2016-04-30 14 views
0

Ich habe eine Wellenform, in der ich einen bestimmten Punkt (grüner Stern auf der Handlung unten) mit einem Kriterium bestimmt habe. Ich möchte jetzt die Position des nächsten Peaks (könnte ein Maximum oder Minimum sein) auf der rechten Seite dieses Punktes (z. B. roter Kreis auf dem Diagramm unten, in diesem Fall ist es ein Minimum) automatisch finden. Beachten Sie, dass ich dies auf mehreren Wellenformen mit unterschiedlichen Peakhöhen/Rauschgehalt ausführen werde.Finde die nächste Spitze von einem Punkt mit MATLAB

Versucht die Funktion findpeaks(), aber kann es nicht wirklich zum Funktionieren bringen! Jede Hilfe wird sehr geschätzt.

example waveform

von user3288586 Neuer Code nach der Antwort des EDITED, arbeiten:

prominence_factor = 0.1 
[peakPos , locPos] = findpeaks (signal,time,'Npeaks',1,'MinPeakProminence', prominence_factor); 
[peakNeg, locNeg] = findpeaks (-signal,time, 'Npeaks', 1, 'MinPeakProminence', prominence_factor); 

Antwort

1

Sie findpeaks zweimal ausführen können. Zuerst mit dem Originalsignal und dann mit dem invertierten Signal. Um das Signal zu invertieren, können Sie folgendes tun:

inverted_signal = 2*mean(original_signal) - original_signal 

Dann sehen Sie, welcher Peak am nächsten ist. Peaks in dem invertierten Signal werden natürlich die Minima bezeichnen.

+1

Vielen Dank! Es hat nicht mit dem invertierten Signal wie in Ihrer Formel funktioniert. Es scheint jedoch gut zu funktionieren, wenn ich nur das Negative meines Signals (-original_signal) nehme. Irgendeine Ahnung? – user3406207

+0

Wenn es funktioniert, benutze es. Und dann akzeptiere seine Antwort :-) – tim

+0

Schwer zu sagen. Es hilft, wenn Sie Ihren Code und das Signal teilen können. – Amal