جدول المحتويات:

كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB: 6 خطوات
كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB: 6 خطوات

فيديو: كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB: 6 خطوات

فيديو: كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB: 6 خطوات
فيديو: جدول الضرب بطريقة سهلة | اوعك تهرب بعد اليوم | خليليو 2024, شهر نوفمبر
Anonim
كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB
كيفية إجراء اختبار السمع للبالغين باستخدام MATLAB

إخلاء المسؤولية: اختبارنا ليس تشخيصًا طبيًا ويجب عدم استخدامه على هذا النحو. لقياس السمع بدقة ، يرجى مراجعة أخصائي طبي.

باستخدام المواد التي لدينا بالفعل ، أجرت مجموعتنا اختبارًا للسمع. اختبارنا مخصص لاستخدام البالغين والمراهقين فقط لأن سمع الأطفال الصغار يأتي في نطاقات مختلفة ويجب أن يقاس بواسطة متخصص فقط.

تم استلهام هذا المشروع أثناء العمل في صف BME MATLAB واللعب بالأصوات التي تصدرها الموجات الجيبية. كنا مهتمين بالطرق التي يمكن بها تغيير الموجة الجيبية لتشغيل صوت في درجات مختلفة.

كل ما احتجناه لهذا المشروع هو جهاز كمبيوتر يعمل بنظام MATLAB R2018b وزوج من سماعات الأذن. قمنا بتضمين شخصية أصلية ، فرانسيس ، كتميمة لجعل البرنامج أكثر روح الدعابة.

الخطوة 1: قم بإنشاء إدخال مستخدم لتحليل عمر المستخدم

قم بإنشاء إدخال مستخدم لتحليل عمر المستخدم
قم بإنشاء إدخال مستخدم لتحليل عمر المستخدم
قم بإنشاء إدخال مستخدم لتحليل عمر المستخدم
قم بإنشاء إدخال مستخدم لتحليل عمر المستخدم

الجزء الأول من هذا الرمز هو إدخال إدخال للمستخدم يقرر فيه ما إذا كان كبيرًا بما يكفي للمضي قدمًا في إجراء اختبار السمع. لماذا لا تفعل ذلك بإضافة صور سخيفة لتميمةنا ، فرانسيس؟ للقيام بذلك ، قم بتنزيل الملف المضغوط المضمن ثم قم باستخراجه إلى ملف يمكن سحبه إلى الكود. تابع تحميل الملف المليء بالرسومات دفعة واحدة باستخدام هذا:

Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'؛ GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings / *. jpg'؛

من أجل تقديم مربعات الرسائل والصور الكبيرة للرسومات ، استخدمنا هذه الطريقة الممتعة لإظهار فرانسيس لك. ما عليك سوى قراءة صورة من اختيارك بالتنسيق: متغير = imread ('nameofpicture.jpg')؛

ثم تابع لإظهاره باستخدام imshow (متغير) ؛ سيظهر بعد ذلك كشخصية في MatLab عند تشغيله!

فيما يلي مربعات الرسائل المستخدمة في جميع أنحاء الرمز. uiwait () هي وظيفة يتم فيها إيقاف الكود حتى تنتهي العملية المختارة لـ uiwait. هذه الوظيفة المختارة هي msgbox ('message' ، 'title' ، 'icon')!

لا تتردد في تغيير الرسائل التي يقولها فرانسيس طالما أنك تتبع تنسيق msgbox () أعلاه. إذا كنت تريد استخدام صور فرانسيس ، فقم بتسمية "رمز" على أنه "مخصص" وتابع ذلك بفاصلة ومتغير قراءة الصورة التي اخترتها! يمكنك أيضًا استخدام أنواع "الرموز" المحددة مسبقًا. يجب أن تبدو هذه:

hi = imread ('Regular.jpg') ؛ ٪ يقرأ الصورة من الملف الذي تم تحميله 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' إذا كان strcmp (Q، 'n') disp ('ارفع مستوى صوت جهاز الكمبيوتر الخاص بك إلى مستوى أعلى.') ؛ انتظر وقفة (2) ؛ Q = input ('هل يمكنك سماع الصوت الآن؟ [y / n] n'، 's')؛ نهاية النهاية

ثم هناك لحظة انتظار قبل الانتقال إلى جزء الفحص الفعلي من الكود.

الخطوة 3: قم بإجراء اختبار قياس السمع للأذن اليمنى

قم بإجراء اختبار قياس السمع للأذن اليمنى
قم بإجراء اختبار قياس السمع للأذن اليمنى

في هذا الرمز ، سيتم تشغيل حلقة لمدة 6 تكرارات بترددات وأحجام مختلفة لكل أذن فردية. اعتمادًا على الأذن التي تريد اختبارها ، سيكون للمتغير Out صوت في صف واحد وأصفار في صف آخر.

أولاً ، تقوم بعمل متجهي خط فارغين لتسجيل ترددات واتساع الصوت الذي يسمعه المستخدم.

هذا الجزء موجود في حلقة for مفهرسة بالرغم من العديد من الأصوات التي تريد تشغيلها إذا كنت ترغب في توزيع الترددات التي يتم تشغيلها والسعة بشكل عشوائي.

F هو التردد: r = (rand * 10000) ؛ خ = 250 + ص ؛ (وظيفة rand هي إنشاء تردد عشوائي) t هي مقدار معين من الوقت يتم تحديده بواسطة: t = linspace (0، Fs * 2، Fs * 2)؛ s هي الموجة الجيبية: s = sin (2 * pi * t * 1000) ؛ (يمكن ضرب هذا بالمتغير العشوائي w لإنشاء قيمة سعة / ديسيبل عشوائية لوظيفة الصوت: w = rand ؛)

ناتج الأذن اليمنى هو: Out = [zeros (size (t))؛ س]'؛

يتم تشغيل المخرجات من خلال الكود: الصوت (مخرج ، Fs)

الخطوة التالية هي إنشاء واجهة مستخدم مع تسجيلات الكود سواء سمع المستخدم الصوت أم لا.

تقوم أولاً بعمل شكل وتحديد الموضع الذي سيظهر فيه الشكل: gcbf = figure ('pos'، [30800 350 150])؛

*** إذا لم يظهر الزر لك ، فقد يكون موضع الشكل ، كما هو موضح في المصفوفة أعلاه ، خاطئًا لجهاز الكمبيوتر الخاص بك. لحل هذه المشكلة ، قم بتغيير القيم 30 و 800 إلى أي موضع تريده. على سبيل المثال ، سيؤدي وجود [0 0350 150] إلى ظهور زر واجهة المستخدم في أسفل يسار الشاشة. ***

يتم عمل زر تبديل للتسجيل عندما يسمع المستخدم الصوت ، ويمكن تخصيص الموضع والعرض: tb = uicontrol ('Style'، 'togglebutton'، 'String'، 'Press the button when you hear a sound'، ' علامة '،' togglebutton1 '،' Position '، [30 60300 40]،' Callback '،' uiresume (gcbf)؛ freq_right = [freq_right، F]؛ amp_right = [amp_right، w]؛ close (gcbf)؛ ') ؛ يحتوي هذا الرمز الخاص على رمز استئناف وتضيف المتجهات الفارغة قيمة إذا تم الضغط على الزر.

ثم قم بإنشاء وظيفة انتظار لاستيعاب استجابة الزر وتنشيط الكود الموجود في الزر عند الضغط عليه: h = randi ([4، 7])؛ uiwait (gcbf ، ح) ؛ (قمنا بعمل المتغير العشوائي h حتى لا يتمكن المشاركون من الغش وتحديد عدد الثواني اللازمة للرد.)

بعد انتهاء الحلقة ، احتفظ بمتغير خرج التردد (يمين متكرر) بالهرتز ، لذا اتركه بمفرده. ثم قم بتحويل المتغير dB_right من أمبير إلى ديسيبل باستخدام المعادلة: dB_right = mag2db (amp_right) * (- 1)؛

ثم أضف الوظيفة: أغلق الكل. سيخرج هذا من أي أرقام غير ضرورية قد تكون ظهرت.

أضف وظيفة وقفة ، حوالي 10 ثوانٍ ، لإعطاء المستخدم وقتًا لضبط الأذن اليسرى والاستعداد لها.

الخطوة 4: قم بإنشاء نفس الرمز للأذن اليسرى

قم بإنشاء نفس الرمز للأذن اليسرى
قم بإنشاء نفس الرمز للأذن اليسرى

كرر الرمز المستخدم للأذن اليمنى لعمل المقطع التالي الذي يختبر الأذن اليسرى. الاختلاف الوحيد هو تغيير قناة الإخراج التي سيأتي منها الصوت. للقيام بذلك ، اقلب ترتيب قيم الصفيف للمتغير Out. يجب أن تبدو هذه:

خارج = [ق ؛ الأصفار (الحجم (ر))] '؛

من خلال القيام بذلك ، لن يخرج أي صوت من القناة اليمنى ولكن من القناة اليسرى بدلاً من ذلك!

الخطوة 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] ، [120120 90 90] ، [0.96 ، 0.24 ، 0.24]) ؛ ٪ أحمر

نص (3200 ، 103 ، "عميق")

ثم أضف المخططات المبعثرة اليمنى واليسرى! يمكننا توفير معدل وطني عام لك! هنا:

Nat_FreqL = [250500 1000 2000 4000 8000] ؛ ٪ x-value ، earNat_dBL الأيسر = [10 3 10 15 10 15] ؛ ٪ y القيمة

Nat_FreqR = [250500 1000 2000 4000 8000] ؛ ٪ الاذن اليمنى

Nat_dBR = [10 5 10 15 10 15] ؛

يجب أن تميز المخططات المبعثرة النقطتين اليمنى واليسرى. يمكنك عمل الصلبان والدوائر!

NL = مبعثر (Nat_FreqL، Nat_dBL، 'bx') ؛ النسبة المئوية للنقاط المتقاطعة الزرقاء للمخططات NR = مبعثر (Nat_FreqR، Nat_dBR، 'ro') ؛ ٪ مؤامرات دوائر حمراء

اصنع وسيلة إيضاح للرسم البياني الوطني بتخصيصها لمتغيرات محددة: أسطورة ([NL NR]، {'title1'، 'title2'})؛

قم بتعيين حد x من 250 إلى 8000 هرتز وحدك y من -10 إلى 120 ديسيبل. تذكر تغيير القراد الرأسي باستخدام yticks ()

قم بتسمية المحور س الخاص بك "التردد هرتز" والمحور ص الخاص بك "الملعب ديسيبل".

اعكس المحور y بجمع المحور باستخدام ax = gca

ثم اربط خاصية الاتجاه y بها بـ: ax. YDir = 'reverse

الآن الكود الخاص بالثاني هو نفسه تقريبًا ولكن بدون وسيلة الإيضاح ورسم مخططات مبعثرة مع المتغيرات من الاختبارات اليمنى واليسرى.

بعد كل هذا ، أضف وظيفة إيقاف مؤقت لمدة 10 ثوانٍ حتى يتمكن المستخدم من الاطلاع على نتائجها.

الخطوة 6: أضف رسالة شكر صغيرة إذا كنت ترغب في ذلك

أضف رسالة شكر صغيرة إذا كنت ترغب في ذلك!
أضف رسالة شكر صغيرة إذا كنت ترغب في ذلك!

هذا للمتعة فقط إذا كنت ترغب في ذلك ولكن أضف imread () و imshow () و uiwait (msgbox ()) لتوجيه الشكر والوداع! بخلاف ذلك ، تذكر أن تضع clf ؛ أغلق الكل clc. من أجل إغلاق كل شيء. عمل جيد فعلت ذلك!

موصى به: