Kaip aptikti smailę MATLAB

MATLAB yra techninis programinės įrangos paketas, kurį galima naudoti signalams apdoroti ir analizuoti. Dažna signalo analizės procedūra yra smailės aptikimas arba vietinių didžiausių verčių, didesnių už gretimus duomenų taškus, radimas triukšmingame signale. Paprastai reikia apriboti smailės aptikimą iki tam tikro pločio - trukmės, kai signalas yra laiko srityje - vietinio maksimumo, taip pat tam tikro aukščio ar dydžio.

1 žingsnis

Apibrėžkite duomenų šaltinį importuodami duomenis į MATLAB. Pavyzdžiui, sukurkite sinusinę bangą su atsitiktiniu triukšmu:

mano_signalas = nuodėmė (0: 0,1: 10) + randas (1 101);

2 žingsnis

Raskite signalo smailes naudodami kvadratinio interpoliacijos metodą „findpeaks ()“:

[piko_vertė, smailės_vieta] = findpeaks (mano_signalas);

3 žingsnis

Ieškokite minimalaus aukščio smailių naudodami parametrą „minpeakheight“. Aukštis yra realiai įvertintas skalaras, nurodantis minimalią leistinų smailių duomenų vertę:

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

4 žingsnis

Ieškokite smailių, atskirtų minimaliu atstumu, naudodami parametrą „minpeakdistance“. Vertė yra mažiausias indeksų skaičius tarp „my_signal“ vektoriaus smailių ir turi būti sveikas skaičius:

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

5 žingsnis

Naudodami parametrą „slenkstis“ ieškokite tik smailių, viršijančių tam tikrą ribą. Tai yra realiai įvertintas skalaras, nurodantis mažiausią leistiną skirtumą tarp didžiausių ir gretimų duomenų taškų:

[piko_vertė, smailės_vieta] = findpeaks (mano_signalas, 'slenkstis', 0,5);

6 žingsnis

Naudodami parametrą „npeaks“ suraskite tik tam tikrą skaičių smailių. Vertė turi būti sveikas skaičius:

[piko_vertė, smailės_vieta] = findpeaks (mano_signalas, 'npeaks', 5);

Rūšiuoti grąžintą smailių sąrašą naudojant parametrą "sortstr". Leistinos vertės yra „pakilti“, „nusileisti“ ir „nėra“:

[peak_value, peak_location] = findpeaks (mano_signalas, 'sortstr', 'pakilti');