فهرست مطالب:

نحوه انجام تست شنوایی بزرگسالان با استفاده از متلب: 6 مرحله
نحوه انجام تست شنوایی بزرگسالان با استفاده از متلب: 6 مرحله

تصویری: نحوه انجام تست شنوایی بزرگسالان با استفاده از متلب: 6 مرحله

تصویری: نحوه انجام تست شنوایی بزرگسالان با استفاده از متلب: 6 مرحله
تصویری: نحوه جا انداختن مایع گوش 2024, جولای
Anonim
نحوه ساخت تست شنوایی بزرگسالان با استفاده از متلب
نحوه ساخت تست شنوایی بزرگسالان با استفاده از متلب

سلب مسئولیت: آزمایش ما تشخیص پزشکی نیست و نباید از آن استفاده شود. برای اندازه گیری دقیق شنوایی ، لطفاً به پزشک متخصص مراجعه کنید.

با استفاده از موادی که قبلاً داشتیم ، گروه ما یک تست شنوایی انجام داد. آزمایش ما فقط برای بزرگسالان و نوجوانان است زیرا شنوایی کودکان خردسال در محدوده های مختلف است و فقط باید توسط یک متخصص اندازه گیری شود.

این پروژه هنگام کار در کلاس BME MATLAB و بازی با صداهای امواج سینوسی الهام گرفته شد. ما علاقه مند بودیم که چگونه یک موج سینوسی برای پخش صدا در زمین های مختلف تغییر کند.

تنها چیزی که برای این پروژه نیاز داشتیم یک کامپیوتر با MATLAB R2018b و یک جفت هدفون بود. ما یک شخصیت اصلی ، فرانسیس ، را به عنوان طلسم قرار دادیم تا برنامه طنزآمیزتر شود.

مرحله 1: یک ورودی کاربر ایجاد کنید تا سن کاربر را تجزیه و تحلیل کنید

برای تجزیه و تحلیل سن کاربر ، ورودی کاربر ایجاد کنید
برای تجزیه و تحلیل سن کاربر ، ورودی کاربر ایجاد کنید
برای تجزیه و تحلیل سن کاربر ، ورودی کاربر ایجاد کنید
برای تجزیه و تحلیل سن کاربر ، ورودی کاربر ایجاد کنید

اولین قسمت این کد ایجاد ورودی کاربر است که در آن تصمیم می گیرد آیا به اندازه کافی بزرگ شده اند تا بتوانند تست شنوایی را انجام دهند. چرا این کار را با افزودن تصاویر احمقانه ای از طلسم ما ، فرانسیس انجام نمی دهیم؟ برای انجام این کار ، فایل فشرده موجود را بارگیری کرده و سپس آن را در فایلی که می تواند در کد کشیده شود ، استخراج کنید. با استفاده از این موارد ، بارگذاری دسته ای فایل پر از نقاشی را ادامه دهید:

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 ('message'، 'title'، 'icon') است!

تا زمانی که فرمت msgbox () بالا را دنبال می کنید ، می توانید پیامهایی را که فرانسیس می گوید را تغییر دهید. اگر می خواهید از تصاویر فرانسیس استفاده کنید ، بر روی 'icon' به عنوان 'سفارشی' برچسب بزنید و آن را با کاما و متغیر imread تصویری که انتخاب کرده اید ادامه دهید! همچنین می توانید از انواع "نماد" از پیش تعیین شده استفاده کنید. می بایست شبیه به این باشه:

hi = imread ('Regular.jpg')؛ ٪ تصویر را از فایل بارگذاری شده نمایش می دهد نمایش (سلام) ؛ uiwait (msgbox ('سلام و تشکر از شما برای انتخاب تست شنوایی ما! این فرانسیس است و امروز در آزمایش شما به شما کمک خواهد کرد!' ، 'خوش آمدید!' ، 'سفارشی' ، سلام))؛

بعد یک ورودی ایجاد کنید که سن کاربر را می پرسد!

UserAge = input ( قبل از شروع این آزمایش ، چند سال دارید (سال)؟ (به عنوان مثال 32 ، 56 ،…) n '،' s ') ؛

توجه: اگر ارقام عجیب و غریب هستند و تعداد آنها زیاد است ، برای حذف ارقام قبلی هنگام اجرای کد ، از close all استفاده کنید.

سپس یک ساختار case switch ایجاد کنید! به یاد داشته باشید که ورودی کاربر در رشته است و باید آن را به مقدار عددی تبدیل کنید. بنابراین از str2double (UserAge) استفاده کنید. هر مورد باید دارای محدوده سنی 4 تا 6 یا 18 تا 40 باشد. برای اینکه متغیر برای تأیید صحت در یکی از موارد از num2cell (آرایه) مانند زیر استفاده کنید:

switch str2double (UserAge) variable متغیر را از یک رشته به یک عدد مورد عدد num2cell تغییر می دهد (0: 3)

frances = imread ('Egg.jpg')؛

نمایش (فرانسیس) ؛

uiwait (msgbox ("شما یک جنین هستید! فرانسیس فکر می کند باید به جای آن آزمایش شنوایی خود را با پزشک انجام دهید!" ، "Test Denied!" ، "custom" ، frances)) ؛

برگشت

گروههای قبلی باید بازگردانده شوند تا از ادامه کار توسط کاربر جلوگیری شود.

به خاطر داشته باشید که ساختار پرونده را خاتمه دهید و همه شکل ها را ببندید.

مرحله 2: صدا را برای کاربر آزمایش کنید

تست صدا برای کاربر
تست صدا برای کاربر

این بخش برای اطمینان از این وجود دارد که صدای شرکت کننده در دستگاه خود نه خیلی آرام است و نه خیلی بلند.

برای هشدار دادن به کاربر ، یک کادر پیام ظاهر می شود و منتظر تأیید کاربر قبل از ادامه کار با صدا است: uiwait (msgbox ('قبل از شروع آزمایش ، ما می خواهیم یک تست صوتی انجام دهیم تا از میزان صدای درست است! آماده اید؟ '،' صبر کنید! '،' کمک '))؛

موج سینوسی با دامنه 1 و نرخ نمونه 1000 هرتز پخش می شود: T = [0: 1/SampleRate: 2] ؛ y = 1*sin (2*pi*200*T) ؛ صدا (y ، SampleRate) ؛

سپس از کاربر س responseالی با پاسخ وارد شده توسط کاربر پرسیده می شود: Q = ورودی ("آیا می توانید صدا را بشنوید؟ [y/n] n '،' s ')؛

سپس مدتی به دنبال زمانی است که Q == 'n' ، اگر درست است ، صدا تکرار می شود و دوباره از کاربر می پرسد تا پاسخ از 'n' به 'y' تغییر کند: در حالی که Q == 'n' اگر strcmp (Q ، 'n') disp ('صدای کامپیوتر خود را بلندتر کنید.')؛ صبر_صوت؛ مکث (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 ضرب کرد تا مقدار دامنه/دسی بل تصادفی برای عملکرد صدا ایجاد شود: w = rand؛)

خروجی گوش راست این است: Out = [صفر (اندازه (t)) ؛ s] '؛

خروجی ها از طریق کد پخش می شوند: صدا (خروجی ، Fs)

مرحله بعدی ایجاد یک رابط کاربری با ضبط کد است که آیا کاربر صدا را شنیده است یا نه.

ابتدا یک شکل می سازید و موقعیتی را که شکل در آن ظاهر می شود تعیین می کنید: gcbf = figure ('pos'، [30 800 350 150])؛

*** اگر دکمه برای شما ظاهر نمی شود ، موقعیت شکل ، همانطور که در آرایه بالا نشان داده شده است ، ممکن است برای رایانه شما اشتباه باشد. برای حل این مشکل ، مقادیر 30 و 800 را به هر موقعیتی که می خواهید تغییر دهید. به عنوان مثال ، داشتن [0 0 350 150] دکمه gui را در پایین سمت چپ مانیتور ایجاد می کند. ***

یک دکمه ضبط برای ضبط با کاربر با شنیدن صدا ساخته شده است و موقعیت و صفحه نمایش می تواند سفارشی شود: 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) را در هرتز نگه دارید ، بنابراین آن را به حال خود رها کنید. سپس با استفاده از معادله متغیر 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-value، ear leftNat_dBL = [10 3 10 15 10 15 15]؛ ٪ y-value

Nat_FreqR = [250 500 1000 2000 4000 8000]؛ ٪ گوش راست

Nat_dBR = [10 5 10 15 10 15 15]؛

نمودارهای پراکنده باید نقاط چپ و راست را تشخیص دهند. شما می توانید صلیب و دایره انجام دهید!

NL = پراکندگی (Nat_FreqL ، Nat_dBL ، 'bx') ؛ ٪ نمودارها نقاط متقاطع آبی NR = پراکندگی (Nat_FreqR ، Nat_dBR ، 'ro') ؛ ٪ دایره های قرمز را ترسیم می کند

با اختصاص دادن آن به متغیرهای خاص برای نمودار ملی یک افسانه بسازید: legend ([NL NR]، {'title1'، 'title2'})؛

محدودیت x خود را از 250 تا 8000 هرتز و حد y خود را از -10 تا 120 دسی بل تنظیم کنید. به یاد داشته باشید که تیک های عمودی خود را با yticks تغییر دهید ()

محور x خود را "فرکانس هرتز" و محور y خود را "پیچ dB" برچسب گذاری کنید.

با جمع آوری محور با ax = gca ، محور y را معکوس کنید

سپس خاصیت جهت y را به آن متصل کنید: ax. YDir = 'معکوس

در حال حاضر کد دوم تقریباً یکسان است اما بدون افسانه و رسم نمودارهای پراکنده با متغیرهای آزمایش چپ و راست.

پس از همه این موارد ، یک تابع مکث برای حدود 10 ثانیه اضافه کنید تا کاربر بتواند به نتایج آنها نگاه کند.

مرحله 6: در صورت تمایل کمی پیام تشکر اضافه کنید

در صورت تمایل کمی پیام تشکر اضافه کنید!
در صورت تمایل کمی پیام تشکر اضافه کنید!

اگر می خواهید imread () ، imshow () و uiwait (msgbox ()) دیگری را برای تشکر و خداحافظی اضافه کنید ، فقط برای سرگرمی است. به غیر از این ، به یاد داشته باشید که clf را قرار دهید. همه را بستن ؛ clc؛ تا همه چیز بسته شود خوب کار کردی!

توصیه شده: