תוכן עניינים:

Arduino: Transform Frequency (DFT): 6 שלבים
Arduino: Transform Frequency (DFT): 6 שלבים

וִידֵאוֹ: Arduino: Transform Frequency (DFT): 6 שלבים

וִידֵאוֹ: Arduino: Transform Frequency (DFT): 6 שלבים
וִידֵאוֹ: למידה עמוקה ליישומי עיבוד תמונה באמצעות MATLAB 2024, יולי
Anonim
Arduino: Transform Frequency (DFT)
Arduino: Transform Frequency (DFT)

תוכנית זו היא לחשב טרנספורמציה תדר על arduino עם שליטה בלילה על פרמטרים. זה נפתר באמצעות חילוף fouriior חילול.

זה לא FFT

FFT הוא אלגוריתם המשמש לפתרון DFT בזמן קצר יותר.

קוד עבור FFT ניתן למצוא כאן.

שלב 1: איך זה עובד (מושג):

איך זה עובד (קונספט)
איך זה עובד (קונספט)
איך זה עובד (קונספט)
איך זה עובד (קונספט)

בהתחשב בתוכנית לשינוי תדרים מספקת שליטה רבה על הפלט הדרוש לך. תוכנית זו מעריכה את טווח התדרים שניתן על ידי המשתמש בקלט נתון עבור ערכת נתונים.

  • באיור מערך נתונים העשוי משני תדרים בשם f2 ו- f5 בהתחשב בהם יש לבדוק. f2 ו- f5 הם שמות אקראיים לשתי תדרים, מספר גבוה יותר לתדירות גבוהה יחסית. כאן לתדר קטן יותר f2 יש משרעת גבוהה יותר ו- f5 יש משרעת קטנה יותר.
  • ניתן להראות מתמטית שסיכום של ריבוי של שתי מערכי נתונים הרמוניים בעלי תדירות שונה נוטה לאפס (מספר נתונים גבוה יותר יכול להוביל לתוצאה של בלילה). במקרה שלנו אם לשתי תדרי הכפל הללו יש תדר זהה (או קרוב מאוד), סכום ההכפלה הוא מספר לא אפס כאשר המשרעת תלויה במשרעת הנתונים.
  • כדי לזהות תדר ספציפי נתון מערך הנתונים ניתן להכפיל בתדרי בדיקה שונים והתוצאה יכולה לתת מרכיב של תדר זה בנתונים.

שלב 2: איך זה עובד (בקוד):

איך זה עובד (בקוד)
איך זה עובד (בקוד)
איך זה עובד (בקוד)
איך זה עובד (בקוד)

עבור הנתונים הנתונים (f2+f5) אחד אחד f1 עד f6 הוא כפליים וערך הסכום מצוין למטה. הסכום הסופי הזה מייצג את התוכן של התדר הזה. מנוחה (לא תואמת) של התדירות צריכה להיות אפסית באופן אידיאלי אך היא אינה אפשרית במקרה האמיתי. כדי להפוך את סכום האפס יש צורך בגודל אינסופי של ערכות נתונים.

  • כפי שניתן להציג באיור f1 עד f6 תדירות הניסוי והכפלתו עם הנתונים המוגדרים בכל נקודה מוצגת.
  • בתמונה השנייה מסכמים את הכפל הזה בכל תדר. ניתן לזהות שתי פסגות ב -1 ו -5.

לכן באמצעות אותה גישה לנתונים אקראיים אנו יכולים להעריך לתדירות כה רבה ולנתח את תוכן התדרים של נתונים.

שלב 3: שימוש בקוד לניתוח תדרים:

שימוש בקוד לניתוח תדרים
שימוש בקוד לניתוח תדרים

לדוגמא מאפשר להשתמש בקוד זה כדי למצוא DFT של גל מרובע.

הדבק ראשון קוד מצורף (פונקציית dft) לאחר הלולאה כפי שמוצג בתמונה

8 תנאים שצריכים להיות מפורטים

  1. מערך שצריך לקחת אותו ב- dft
  2. גודל מערך
  3. מרווח זמן בין 2 קריאות במערך ב- milliSECONDS
  4. ערך נמוך יותר של טווח התדרים בהרץ
  5. ערך עליון של טווח התדרים בהרץ
  6. גודל המדרגות לטווח התדרים
  7. חזרה על אות (מינימום 1) דיוק חבטות מספר גבוה יותר אך זמן פתרון מוגדל
  8. פונקציית חלון:

    0 ללא חלון 1 לחלון שטוח 2 לחלון האן 3 לחלון חבטה

(אם אין לך מושג לגבי בחירת חלון שמור על ברירת מחדל 3)

דוגמה: dft (a, 8, 0.5, 0, 30, 0.5, 10, 3); כאן a הוא מערך בגודל 8 אלמנט שיש לבדוק 0 עד 30 הרץ עם צעד 0.5 (0, 0.5, 1, 1.5, …, 29, 29.5, 30) 10 חזרה וחלון חלונות

כאן אפשר להשתמש במערך גדול יותר ככל שארדואינו יכול להתמודד.

שלב 4: פלט:

תְפוּקָה
תְפוּקָה
תְפוּקָה
תְפוּקָה

אם תגיב

Serial.print (f); Serial.print ("\ t");

מ- plotter סדרתי קוד ייתן לאופי של ספקטרום התדרים צג סידורי אם לא טורי ייתן תדר עם המשרעת שלו.

שלב 5: בדיקת חלון ודוגמאות שונות:

בדיקת חלון ודוגמאות שונות
בדיקת חלון ודוגמאות שונות

באיור, תדירות גל הסינוס נמדדת באמצעות הגדרה שונה.

שלב 6: דוגמה:

דוגמא
דוגמא

בהשוואה בין נתוני הנתונים באמצעות SciLab וארדואינו מושווים.

מוּמלָץ: