Το 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');