Агуулгын хүснэгт:

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';

Зурвасын зургийн хайрцаг, том зургуудыг танилцуулахын тулд бид Францыг танд үзүүлэх энэхүү хөгжилтэй аргыг ашигласан. Сонгосон зургаа дараах форматаар уншаарай: variable = imread ('nameofpicture.jpg');

Дараа нь imshow (хувьсагч) ашиглан үүнийг харуулаарай. дараа нь үүнийг ажиллуулах үед энэ нь таны MatLab -д дүрс хэлбэрээр харагдах болно!

Дараа нь кодын туршид хэрэглэгддэг зурвасын хайрцгууд байна. uiwait () нь uiwait -ийг сонгосон функц дуустал кодыг зогсоох функц юм. Энэ сонгосон функц нь msgbox ('зурвас', 'гарчиг', 'дүрс')!

Та дээрх msgbox () форматыг дагаж байгаа бол Фрэнсисийн хэлсэн мессежийг өөрчлөх боломжтой. Хэрэв та Фрэнсисийн зургийг ашиглахыг хүсвэл 'icon' -г 'custom' гэж бичээд таслал болон сонгосон зургийн зургийн хувьсагчаар үргэлжлүүлээрэй. Та мөн урьдчилан тохируулсан 'дүрс' төрлийг ашиглаж болно. иймэрхүү харагдах ёстой:

сайн уу = уншсан ('Regular.jpg'); % нь uploadedimshow файлаас зургийг уншдаг (сайн уу); uiwait (msgbox ('Сайн байна уу, бидний сонсголын тестийг сонгосонд баярлалаа! Энэ бол Фрэнсис бөгөөд тэр өнөөдөр чиний шалгалтанд туслах болно!', 'Тавтай морил!', 'custom', hi));

Дараа нь хэрэглэгчийн насыг ингэж асуудаг оролтыг үүсгэнэ үү!

UserAge = input ('Энэ тестийг эхлүүлэхийн өмнө та хэдэн настай вэ? (Жишээ нь 32, 56,…) n', 's');

ТАЙЛБАР: Хэрэв тоонууд хачирхалтай, хэт олон байвал таны код ажиллаж байх үед өмнөх тоонуудыг хасахын тулд бүгдийг хаах командыг ашиглана уу.

Дараа нь шилжүүлэгч кейсийн бүтцийг бий болго! Хэрэглэгчийн оролт нь мөрөнд байгаа бөгөөд үүнийг тоон утга болгон хөрвүүлэх хэрэгтэй гэдгийг санаарай. Тиймээс str2double (UserAge) ашиглана уу. Кейс бүр 4-6 эсвэл 18-40 хүртэлх насны хүрээтэй байх ёстой. Аль нэг тохиолдолд үнэн эсэхийг шалгах хувьсагчтай байхын тулд num2cell (массив) -ийг дараах байдлаар ашиглана.

шилжүүлэгч str2double (UserAge) % нь хувьсагчийг мөрөөс тоон утгатай тохиолдолд num2cell болгон өөрчилдөг (0: 3)

франц = imread ('Egg.jpg');

imshow (Франц);

uiwait (msgbox ('Та бол ураг! Фрэнсис сонсголын тестээ оронд нь эмчтэй хийх хэрэгтэй гэж бодож байна!', 'Туршилтыг үгүйсгэсэн!', 'заншил', франц)));

буцах

Хэрэглэгч кодыг үргэлжлүүлэхээс урьдчилан сэргийлэхийн тулд өмнөх бүлгүүдийг буцааж өгөх ёстой.

Кейсийн бүтцийг дуусгаж, бүх зургийг хаахаа бүү мартаарай.

Алхам 2: Хэрэглэгчийн аудиог шалгана уу

Аудиог хэрэглэгчийн хувьд туршиж үзээрэй
Аудиог хэрэглэгчийн хувьд туршиж үзээрэй

Энэхүү сегмент нь оролцогчийн төхөөрөмж дээрх дуу чимээ хэтэрхий намуухан эсвэл хэт чанга биш байхыг баталгаажуулахын тулд байдаг.

Хэрэглэгчид анхааруулга өгөхийн тулд мессежийн хайрцаг гарч ирэх бөгөөд дууг үргэлжлүүлэхийн өмнө хэрэглэгчээс баталгаажуулахыг хүлээнэ үү: uiwait (msgbox ('Туршилт эхлэхээс өмнө бид дууны түвшинг шалгахын тулд аудио тест хийхийг хүсч байна. зөв үү! Бэлэн үү? ',' Түр хүлээгээрэй! ',' тусламж '));

Синус долгионыг 1 далайцтай, 1000 Гц -ийн түүврийн хурдтай тоглодог: T = [0: 1/SampleRate: 2]; y = 1*нүгэл (2*pi*200*T); дуу (y, SampleRate);

Дараа нь хэрэглэгчээс хэрэглэгчийн оруулсан хариулттай асуулт асууна: 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 = rand;)

Баруун чихний гаралт нь: Out = [тэг (хэмжээ (t)); s] ';

Гаралтыг кодоор тоглуулдаг: дуу (Out, Fs)

Дараагийн алхам бол хэрэглэгчийн интерфейсийг хэрэглэгч дууг сонссон эсэхээс үл хамааран кодын бүртгэлд оруулах явдал юм.

Эхлээд та зураг хийж, зураг гарч ирэх байрлалыг тодорхойлно уу: gcbf = зураг ('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 хувьсагчийг amps-аас децибел болгон хөрвүүлэх: 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'); % график цэнхэр хөндлөн онооNR = тархалт (Nat_FreqR, Nat_dBR, 'ro'); % улаан тойрог зурдаг

Үндэсний графикийг тодорхой хувьсагчдад оноож өгснөөр домог хийх: домог ([NL NR], {'title1', 'title2'});

X -ийн хязгаарыг 250-8000 Гц, y -10 -аас 120 дБ хүртэл тохируулна уу. Yticks () ашиглан босоо хачигаа өөрчлөхөө бүү мартаарай.

Х тэнхлэгээ "Давтамжийн давтамж", у тэнхлэгээ "давирхай дБ" гэж тэмдэглээрэй.

Тэнхлэгээ ax = gca ашиглан цуглуулах замаар y тэнхлэгийг урвуу болгоно

Дараа нь y чиглэлийн шинж чанарыг түүнтэй холбоно уу: ax. YDir = 'урвуу

Одоо секундын код нь ойролцоогоор ижил боловч домоггүй, тархсан хэсгүүдийг зүүн ба баруун талын хувьсагчаар дүрслэхгүй.

Энэ бүхний дараа хэрэглэгч ойролцоогоор 10 секундын турш түр зогсоох функцийг нэмснээр хэрэглэгч үр дүнг нь харах боломжтой болно.

Алхам 6: Хэрэв та хүсвэл бяцхан баярлалаа гэсэн мессеж нэмж оруулаарай

Хэрэв та хүсвэл бяцхан баярлалаа гэсэн мессеж нэмж оруулаарай!
Хэрэв та хүсвэл бяцхан баярлалаа гэсэн мессеж нэмж оруулаарай!

Хэрэв та хүсвэл өөр imread (), imshow () болон uiwait (msgbox ()) нэмээд баярлалаа гэж хэлээрэй. Үүнээс гадна clf тавихаа мартуузай; бүгдийг хаах; clc; бүх зүйлийг хаахын тулд. Сайн ажил хийлээ!

Зөвлөмж болгож буй: