Come rilevare il picco in MATLAB

MATLAB è un pacchetto software tecnico che può essere utilizzato per l'elaborazione e l'analisi del segnale. Una procedura comune nell'analisi del segnale è il rilevamento del picco o la ricerca di massimi locali - valori più grandi dei punti dati adiacenti - all'interno di un segnale rumoroso. Di solito è necessario limitare il rilevamento del picco a massimi locali di una certa ampiezza - durata quando il segnale è nel dominio del tempo - così come una certa altezza o grandezza.

Passo 1

Definisci un'origine dati importando i dati in MATLAB. Ad esempio, crea un'onda sinusoidale con rumore casuale:

mio_segnale = sin(0:0.1:10) + rand(1.101);

Passo 2

Trova i picchi nel tuo segnale usando il metodo di interpolazione quadratica di "findpeaks()":

[peak_value, peak_location] = findpeaks(my_signal);

Passaggio 3

Cercare picchi di altezza minima utilizzando il parametro "minpeakheight". L'altezza è uno scalare a valori reali che si riferisce al valore minimo dei dati dei picchi consentiti:

[peak_value, peak_location] = findpeaks(my_signal,'minpeakheight',2.5);

Passaggio 4

Cercare picchi separati da una distanza minima utilizzando il parametro "minpeakdistance". Il valore è il numero minimo di indici tra i picchi nel vettore "my_signal" e deve essere un numero intero:

[peak_value, peak_location] = findpeaks(my_signal,'minpeakdistance',5);

Passaggio 5

Cerca solo i picchi al di sopra di una certa soglia utilizzando il parametro "soglia". Questo è uno scalare a valori reali che si riferisce alla differenza minima consentita tra i punti dati di picco e adiacenti:

[peak_value, peak_location] = findpeaks(my_signal,'threshold',0.5);

Passaggio 6

Trova solo un certo numero di picchi utilizzando il parametro "npeaks". Il valore deve essere un numero intero:

[peak_value, peak_location] = findpeaks(my_signal,'npeaks',5);

Ordina l'elenco di picchi restituito utilizzando il parametro "sortstr". I valori consentiti sono "ascend", "descend" e "none":

[peak_value, peak_location] = findpeaks(my_signal,'sortstr','ascend');