Πώς να εντοπίσετε την αιχμή στο MATLAB

Το MATLAB είναι ένα τεχνικό πακέτο λογισμικού που μπορεί να χρησιμοποιηθεί για επεξεργασία και ανάλυση σημάτων. Μια κοινή διαδικασία στην ανάλυση σήματος είναι η ανίχνευση κορυφής ή η εύρεση τοπικών μεγίστων - τιμών μεγαλύτερων από τα παρακείμενα σημεία δεδομένων - μέσα σε ένα θορυβώδες σήμα. Συνήθως είναι απαραίτητο να περιοριστεί η ανίχνευση κορυφής στα τοπικά μέγιστα ενός συγκεκριμένου πλάτους - διάρκειας όταν το σήμα βρίσκεται στον τομέα χρόνου - καθώς και ένα ορισμένο ύψος ή μέγεθος.

Βήμα 1

Ορίστε μια πηγή δεδομένων εισάγοντας δεδομένα στο MATLAB. Για παράδειγμα, δημιουργήστε ένα ημιτονοειδές κύμα με τυχαίο θόρυβο:

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

Βήμα 2

Βρείτε κορυφές στο σήμα σας χρησιμοποιώντας τη μέθοδο τετραγωνικής παρεμβολής του "findpeaks ()":

[peak_value, peak_location] = findpeaks (my_signal);

Βήμα 3

Αναζητήστε κορυφές ελάχιστου ύψους χρησιμοποιώντας την παράμετρο "minpeakheight". Το ύψος είναι μια πραγματική αποτίμηση που αναφέρεται στην ελάχιστη τιμή δεδομένων των επιτρεπόμενων κορυφών:

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

Βήμα 4

Αναζητήστε κορυφές διαχωρισμένες με μια ελάχιστη απόσταση χρησιμοποιώντας την παράμετρο "minpeakdistance". Η τιμή είναι ο ελάχιστος αριθμός δεικτών μεταξύ κορυφών στο διάνυσμα "my_signal" και πρέπει να είναι ακέραιος:

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

Βήμα 5

Αναζητήστε μόνο κορυφές πάνω από ένα συγκεκριμένο όριο χρησιμοποιώντας την παράμετρο "κατώφλι". Πρόκειται για μια πραγματική αποτίμηση που αναφέρεται στην ελάχιστη επιτρεπόμενη διαφορά μεταξύ κορυφών και παρακείμενων σημείων δεδομένων:

[peak_value, peak_location] = findpeaks (my_signal, "όριο", 0,5);

Βήμα 6

Βρείτε μόνο έναν συγκεκριμένο αριθμό κορυφών χρησιμοποιώντας την παράμετρο "npeaks". Η τιμή πρέπει να είναι ακέραιος:

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

Ταξινομήστε την επιστρεφόμενη λίστα κορυφών χρησιμοποιώντας την παράμετρο "sortstr". Οι επιτρεπόμενες τιμές είναι "αύξουσα", "κατέβασμα" και "καμία":

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