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

כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB: 6 שלבים
כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB: 6 שלבים

וִידֵאוֹ: כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB: 6 שלבים

וִידֵאוֹ: כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB: 6 שלבים
וִידֵאוֹ: ✔ האם אתה מטומטם? במבחן הזה תגלה ! ( רק 12% מצליחים ) 2024, נוֹבֶמבֶּר
Anonim
כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB
כיצד לבצע בדיקת שמיעה למבוגרים באמצעות MATLAB

כתב ויתור: הבדיקה שלנו אינה אבחון רפואי ואין להשתמש בה ככזו. כדי למדוד את השמיעה במדויק, פנה לרופא מומחה.

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

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

כל מה שהיינו צריכים לפרויקט זה היה מחשב שמריץ MATLAB R2018b וזוג אוזניות. כללנו דמות מקורית, פרנסס, כקמע כדי להפוך את התוכנית להומוריסטית יותר.

שלב 1: צור קלט משתמש לניתוח גיל המשתמש

צור קלט משתמש לניתוח גיל המשתמש
צור קלט משתמש לניתוח גיל המשתמש
צור קלט משתמש לניתוח גיל המשתמש
צור קלט משתמש לניתוח גיל המשתמש

החלק הראשון בקוד זה הוא להזין קלט משתמש בו הוא מחליט אם הם מבוגרים מספיק כדי להמשיך לבצע את בדיקת השמיעה. למה לא לעשות זאת על ידי הוספת תמונות מטופשות של הקמע שלנו, פרנסס? לשם כך, הורד את קובץ ה- zip הכלול ולאחר מכן חלץ אותו לקובץ שניתן למשוך אותו לתוך הקוד. המשך להעלות את הקובץ מלא הציורים באמצעות קבוצה באמצעות זה:

Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';

על מנת להציג את תיבות ההודעות והתמונות הגדולות של הציורים, השתמשנו בשיטה המהנה הזו להראות לכם את פרנסס. כל שעליך לעשות הוא לקרוא תמונה לפי בחירתך בפורמט: variable = imread ('nameofpicture.jpg');

לאחר מכן המשך להציג אותו באמצעות imshow (משתנה); לאחר מכן הוא יופיע כדמות ב- MatLab שלך כאשר תפעיל אותו!

להלן תיבות ההודעות המשמשות לאורך כל הקוד. uiwait () היא פונקציה שבה הקוד נעצר עד לסיום הפעולה שנבחרה עבור uiwait. הפונקציה שנבחרה היא msgbox ('הודעה', 'כותרת', 'סמל')!

אתה יכול להרגיש חופשי לשנות את ההודעות שפרנסס אומרת כל עוד אתה עוקב אחר פורמט msgbox () למעלה. אם ברצונך להשתמש בתמונות של פרנסס, סמן 'אייקון' כ'הגדרה מותאמת אישית 'והמשך עם פסיק והמשתנה של הקריאה של התמונה שבחרת! תוכל גם להשתמש בסוגי 'האייקון' המוגדרים מראש. זה אמור להיראות כך:

hi = imread ('Regular.jpg'); % קורא את התמונה מהקובץ uploadedimshow (היי); uiwait (msgbox ('שלום ותודה שבחרת בבדיקת השמיעה שלנו! זו פרנסס והוא יעזור לך היום עם הבדיקה שלך!', 'ברוכים הבאים!', 'מותאם אישית', היי));

לאחר מכן צור קלט ששואל את גיל המשתמש כך!

UserAge = input ('לפני שנתחיל במבחן זה, בן כמה (שנים) אתה? (למשל 32, 56, …) n', 's');

הערה: אם הנתונים מוזרים ויש יותר מדי, השתמש בסגור הכל כדי להסיר את הנתונים הקודמים ככל שהקוד שלך פועל

לאחר מכן צור מבנה מארז מתג! זכור כי קלט המשתמש הוא במחרוזת ועליך להמיר אותו לערך מספרי. אז השתמש ב- str2double (UserAge). כל מקרה צריך להיות בטווח גילאים כגון 4 עד 6 או 18 עד 40. כדי שהמשתנה יוודא כנכון עבור אחד המקרים השתמש ב- num2cell (מערך) כך:

לעבור משתנה % משתנה str2double (UserAge) ממחרוזת למספר ערך מספריים num2cell (0: 3)

frances = imread ('Egg.jpg');

imshow (צרפת);

uiwait (msgbox ('אתה עובר! פרנסס חושבת שכדאי לך לבצע בדיקת שמיעה אצל רופא במקום זאת!', 'בדיקה נדחתה!', 'מותאם אישית', פרנסס));

לַחֲזוֹר

יש להחזיר את הקבוצות הקודמות על מנת למנוע מהמשתמש להמשיך בקוד.

זכור לסיים את מבנה התיק ולסגור את כל הנתונים.

שלב 2: בדוק את אודיו עבור המשתמש

בדוק את אודיו עבור המשתמש
בדוק את אודיו עבור המשתמש

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

כדי לתת למשתמש אזהרה, תיבת הודעה צצה ומחכה לאישור מהמשתמש לפני שתמשיך הלאה עם הצליל: uiwait (msgbox ('לפני תחילת הבדיקה, נרצה לבצע בדיקת שמע כדי לוודא את עוצמת הקול שלך) נכון! מוכן? ',' המתן! ',' עזרה '));

גל סינוס מושמע עם משרעת של 1 וקצב הדגימה של 1000 הרץ: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); צליל (y, SampleRate);

לאחר מכן המשתמש נשאל שאלה עם תשובת המשתמש שהוזנה: Q = input ('האם אתה יכול לשמוע את הצליל? [Y/n] n', 's');

לאחר מכן יש זמן לחפש מתי Q == 'n', אם נכון אז הצליל חוזר ושאל את המשתמש שוב עד שהתשובה השתנתה מ- 'n' ל- 'y': בעוד Q == 'n' if strcmp (Q, 'n') disp ('הגביר את עוצמת הקול של המחשב שלך.'); sound_sound; הפסקה (2); Q = קלט ('האם אתה יכול לשמוע את הצליל עכשיו? [Y/n] n', 's'); סוף סוף

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

שלב 3: בצע את בדיקת האודיומטריה לאוזן ימין

בצע את בדיקת האודיומטריה לאוזן ימין
בצע את בדיקת האודיומטריה לאוזן ימין

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

ראשית אתה יוצר שני וקטורי קו ריקים כדי להקליט את התדרים ואת משרעת הצליל שהמשתמש שומע.

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

F הוא התדירות: r = (rand*10000); Fs = 250 + r; (הפונקציה rand היא ליצור תדר שנוצר באופן אקראי) t הוא פרק זמן מסוים שהתקדם לקבוע על ידי: t = linspace (0, Fs*2, Fs*2); s הוא גל הסינוס: s = sin (2*pi*t*1000); (ניתן להכפיל זאת במשתנה האקראי w כדי ליצור ערך משרעת אקראי/dB לפונקציית הצליל: w = rand;)

הפלט לאוזן הימנית הוא: Out = [אפסים (גודל (t)); s] ';

הפלט מושמע באמצעות הקוד: צליל (Out, Fs)

השלב הבא הוא ליצור ממשק משתמש עם רשומות הקוד בין אם המשתמש שמע את הצליל או לא.

ראשית אתה יוצר דמות וקובע את המיקום בו תופיע הדמות: gcbf = figure ('pos', [30 800 350 150]);

*** אם הכפתור אינו מופיע עבורך, המיקום של הדמות, כפי שמוצג במערך למעלה, עשוי להיות ממוקם לא נכון עבור המחשב שלך. כדי לפתור זאת, שנה את ערכי 30 ו -800 למיקום הרצוי לך. לדוגמה, אם יש לך [0 0 350 150] יוליד את לחצן הגוי בפינה השמאלית התחתונה של הצג. ***

כפתור לחיצה מתבצע להקלטה כאשר המשתמש שומע את הצליל, וניתן להתאים אישית את המיקום והתצוגה: tb = uicontrol ('Style', 'togglebutton', 'String', 'לחץ על הכפתור כשאתה שומע צליל', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); הקוד הספציפי הזה כולל את קורות החיים מחדש והווקטורים הריקים מוסיפים ערך אם לוחצים על הכפתור.

לאחר מכן צור פונקציית המתנה כדי לקבל את תגובת הכפתור ולהפעיל את הקוד בכפתור בלחיצה: h = randi ([4, 7]); uiwait (gcbf, h); (עשינו את המשתנה האקראי h כך שהמשתתפים לא יכלו לרמות ולקבוע את מספר השניות הדרושות להגיב).

לאחר סיום הלולאה, שמור על משתנה פלט התדר (freq_right) ב- Hz, אז עזוב את זה לבד. לאחר מכן המר את המשתנה dB_right מאמפר לדציבלים באמצעות המשוואה: dB_right = mag2db (amp_right)*(-1);

לאחר מכן הוסף את הפונקציה: סגור הכל. זה ייצא מכל נתון מיותר שעלול לצוץ.

הוסף פונקציית הפסקה, כ -10 שניות, על מנת לתת למשתמש זמן להתאים ולהתכונן לאוזן השמאלית.

שלב 4: צור אותו קוד לאוזן השמאלית

צור אותו קוד לאוזן השמאלית
צור אותו קוד לאוזן השמאלית

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

החוצה = [s; אפסים (גודל (t))] ';

על ידי כך, שום צליל לא ייצא מהערוץ הימני אלא מהערוץ השמאלי במקום זאת!

שלב 5: צור איור זה לצד זה להשוואת הנתונים

צור איור זה לצד זה כדי להשוות את הנתונים
צור איור זה לצד זה כדי להשוות את הנתונים
צור איור זה לצד זה כדי להשוות את הנתונים
צור איור זה לצד זה כדי להשוות את הנתונים

עכשיו ערוך גרף להצגת הנתונים! אתה מכניס שני גרפים לדמות אחת אז עשה זאת!

איור (1); עלילת משנה (1, 2, 1); *** חלקת משנה (1, 2, 2) עבור השנייה

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

תיקון ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % חלקת המשנה תחזיק כעת את התיקונים והפיזורים הבאים

טקסט (3173, 8, 'רגיל');

תיקון ([250 8000 8000 250], [40 40 25 25], [0 0.75 0.25]); % ירוק

טקסט (3577, 33, 'קל');

תיקון ([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % טורקיז

טקסט (2870, 48, 'מתון');

תיקון ([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); % כחול

טקסט (1739, 62, 'בינוני חמור');

תיקון ([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % סגול

טקסט (3142, 80, 'חמור');

תיקון ([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % אדום

טקסט (3200, 103, 'עמוק')

לאחר מכן הוסיפו את חלקות הפיזור השמאליות והימניות! אנו יכולים לספק לך ממוצע לאומי כללי! פה:

Nat_FreqL = [250 500 1000 2000 4000 8000]; ערך x %, אוזן שמאל Nat_dBL = [10 3 10 15 10 15]; ערך y %

Nat_FreqR = [250 500 1000 2000 4000 8000]; % אוזן ימנית

Nat_dBR = [10 5 10 15 10 15];

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

NL = פיזור (Nat_FreqL, Nat_dBL, 'bx'); % מתווה נקודות צלב כחולות N = פיזור (Nat_FreqR, Nat_dBR, 'ro'); % משרטט עיגולים אדומים

צור מקרא עבור הגרף הלאומי על ידי הקצאתו למשתנים ספציפיים: מקרא ([NL NR], {'title1', 'title2'});

הגדר את מגבלת ה- x שלך מ- 250 ל- 8000 הרץ ואת מגבלת y שלך מ -10 עד 120 dB. זכור לשנות את הקרציות האנכיות שלך באמצעות yticks ()

סמן את ציר ה- x שלך "תדר Hz" ואת ציר ה- y שלך "Pitch dB".

הפוך את ציר y על ידי איסוף הציר עם ax = gca

לאחר מכן נקשר אליו את המאפיין של כיוון y עם: ax. YDir = 'reverse

כעת הקוד לשני הוא בערך אותו דבר אך ללא האגדה וגרף את נקודות הפיזור עם המשתנים מהבדיקות השמאליות והימניות.

אחרי כל זה, הוסף פונקציית הפסקה למשך כ -10 שניות, כך שהמשתמש יוכל להסתכל על התוצאות שלו.

שלב 6: הוסף הודעת תודה קטנה אם תרצה

הוסף הודעת תודה קטנה אם תרצה!
הוסף הודעת תודה קטנה אם תרצה!

זה רק בשביל הכיף אם תרצה אבל הוסף עוד imread (), imshow () ו- uiwait (msgbox ()) על תודה ותגובה! מלבד זאת, זכור לשים clf; סגור הכל; clc; על מנת לסגור הכל. עבודה טובה עשית את זה!

מוּמלָץ: