כיצד לזהות שיא ב- 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 (האות שלי, 'סף', 0.5);

שלב 6

מצא רק מספר מסוים של פסגות באמצעות הפרמטר "npeaks". הערך חייב להיות מספר שלם:

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

ממיין את רשימת הפסגות שהוחזרה באמצעות הפרמטר "sortstr". הערכים המותרים הם "עלייה", "ירידה" ו"אין ":

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