Turinys:

Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB: 6 žingsniai
Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB: 6 žingsniai

Video: Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB: 6 žingsniai

Video: Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB: 6 žingsniai
Video: STOP The #1 Vitamin D Danger! [Side Effects? Toxicity? Benefits?] 2024, Lapkritis
Anonim
Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB
Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB

ATSISAKYMAS: Mūsų testas nėra medicininė diagnostika ir neturėtų būti naudojamas kaip toks. Norėdami tiksliai išmatuoti klausą, kreipkitės į medicinos specialistą.

Naudodamiesi jau turimomis medžiagomis, mūsų grupė atliko klausos testą. Mūsų testas skirtas naudoti suaugusiems ir paaugliams tik todėl, kad mažų vaikų klausa yra įvairių diapazonų ir ją turėtų matuoti tik profesionalas.

Šis projektas buvo įkvėptas dirbant mūsų BME MATLAB klasėje ir žaidžiant sinusinių bangų skleidžiamais garsais. Mus domino būdai, kaip sinusinė banga gali būti pakeista, kad būtų leidžiamas garsas skirtinguose aukščiuose.

Šiam projektui mums reikėjo tik kompiuterio, kuriame veikia MATLAB R2018b, ir pora ausinių. Mes įtraukėme originalų personažą Francesą į talismaną, kad programa taptų humoristiškesnė.

1 veiksmas: sukurkite vartotojo įvestį vartotojo amžiui analizuoti

Sukurkite vartotojo įvestį, kad išanalizuotumėte vartotojo amžių
Sukurkite vartotojo įvestį, kad išanalizuotumėte vartotojo amžių
Sukurkite vartotojo įvestį, kad išanalizuotumėte vartotojo amžių
Sukurkite vartotojo įvestį, kad išanalizuotumėte vartotojo amžių

Pirmoji šio kodo dalis yra vartotojo įvestis, kurioje nuspręsta, ar jie yra pakankamai seni, kad galėtų atlikti klausos testą. Kodėl to nepadarius, pridėjus ir kvailų mūsų talismano Franceso nuotraukų? Norėdami tai padaryti, atsisiųskite pridėtą ZIP failą ir ištraukite jį į failą, kurį galima ištraukti į kodą. Toliau įkelkite visą brėžinių failą naudodami grupę:

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

Norėdami pristatyti pranešimų dėžutes ir didelius piešinių vaizdus, mes panaudojome šį įdomų Frances parodymo metodą. Tiesiog imread savo pasirinktą vaizdą tokiu formatu: variable = imread ('nameofpicture.jpg');

Tada parodykite jį naudodami imshow (kintamasis); tada jis bus rodomas kaip figūra jūsų „MatLab“, kai jį paleisite!

Toliau pateikiami pranešimų langeliai, naudojami visame kode. uiwait () yra funkcija, kurios metu kodas sustabdomas, kol bus baigtas uiwait pasirinktas veiksmas. Ši pasirinkta funkcija yra „msgbox“(„pranešimas“, „pavadinimas“, „piktograma“)!

Galite drąsiai keisti pranešimus, kuriuos sako Frances, jei laikysitės aukščiau pateikto „msgbox“() formato. Jei norite naudoti Frances paveikslėlius, pažymėkite „icon“kaip „custom“ir tęskite tai kableliu ir pasirinkto paveikslėlio imread kintamuoju! Taip pat galite naudoti iš anksto nustatytus „piktogramų“tipus. tai turėtų atrodyti taip:

labas = imread ('Regular.jpg'); % skaito vaizdą iš įkelto failošou (sveiki); uiwait (msgbox ('Sveiki ir ačiū, kad pasirinkote mūsų klausos testą! Tai Francesas ir jis šiandien jums padės atlikti jūsų testą!', 'Sveiki atvykę!', 'custom', labas));

Tada sukurkite įvestį, kuri klausia vartotojo amžiaus.

UserAge = input ('Prieš pradedant šį testą, kiek jums metų (metų)? (Pvz., 32, 56,…) n', 's');

PASTABA: jei skaičiai yra keisti ir jų yra per daug, naudokite „uždaryti visus“, kad pašalintumėte ankstesnius skaičius, kai vykdomas kodas

Tada sukurkite jungiklio korpuso struktūrą! Atminkite, kad vartotojo įvestis yra eilutė ir ją reikia konvertuoti į skaitinę vertę. Taigi naudokite str2double (UserAge). Kiekvieno atvejo amžius turėtų būti nuo 4 iki 6 arba nuo 18 iki 40. Kad kintamasis būtų patvirtintas kaip teisingas, naudokite num2cell (masyvą) taip:

jungiklis str2double (UserAge) % keičia kintamąjį iš eilutės į skaitinę reikšmę didžiųjų ir mažųjų raidžių skaičius num2cell (0: 3)

frances = imread ('Egg.jpg');

imshow (frances);

uiwait (msgbox ('Tu esi vaisius! Frances mano, kad klausos testą turėtum atlikti pas gydytoją!', 'Test Denied!', 'custom', frances));

grįžti

Ankstesnės grupės turėtų būti grąžintos, kad vartotojas negalėtų tęsti kodo.

Nepamirškite užbaigti korpuso struktūros ir uždaryti visus skaičius.

2 veiksmas: išbandykite vartotojo garso įrašą

Išbandykite garso įrašą naudotojui
Išbandykite garso įrašą naudotojui

Šis segmentas yra skirtas užtikrinti, kad dalyvio garsas jo įrenginyje nebūtų nei per tylus, nei per garsus.

Norėdami įspėti vartotoją, prieš tęsdamas garsą, pasirodo pranešimų laukelis ir laukia vartotojo patvirtinimo: uiwait (msgbox („Prieš pradedant bandymą norėtume atlikti garso testą, kad įsitikintumėte, ar garsas ar teisingai! Pasirengęs? ',' Laikykis! ',' pagalba '));

Grojama sinusinė banga, kurios amplitudė yra 1, o imties dažnis - 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); garsas (y, SampleRate);

Tada vartotojui užduodamas klausimas, į kurį atsako vartotojas: Q = įvestis („Ar girdite garsą? [Y/n] n ',' s ');

Tada reikia šiek tiek ieškoti, kada Q == 'n', jei tiesa, tada garsas kartojasi ir dar kartą klausė vartotojo, kol atsakymas pasikeitė iš „n“į „y“: tuo tarpu Q == „n“, jei strcmp (Q, 'n') disp ('Padidinkite kompiuterio garsumą.'); laukti_garsas; pauzė (2); Q = įvestis ('Ar dabar girdite garsą? [Y/n] n', 's'); pabaiga galas

Tada reikia palaukti, kol pereisite prie tikrosios kodo tyrimo dalies.

3 žingsnis: atlikite dešinės ausies audiometrijos testą

Atlikite dešinės ausies audiometrijos testą
Atlikite dešinės ausies audiometrijos testą

Šiame kode ciklas veiks 6 pakartojimus, kurių dažnis ir tūris bus skirtingi kiekvienai ausiai. Priklausomai nuo ausies, kurią norite išbandyti, kintamasis Out vienoje eilutėje turės garsą, o kitoje - nulius.

Pirmiausia sukurkite du tuščius eilutės vektorius, kad įrašytumėte vartotojo girdimo garso dažnius ir amplitudę.

Ši dalis yra indeksuota pagal ciklą, kad ir kiek garsų norėtumėte paleisti, jei norite atsitiktinai suskirstyti grojamus dažnius ir amplitudę.

F yra dažnis: r = (rand*10000); Fs = 250 + r; (rando funkcija yra sukurti atsitiktinai sugeneruotą dažnį) t yra tam tikras laiko tarpas, kurį nustato: t = linspace (0, Fs*2, Fs*2); s yra sinusinė banga: s = sin (2*pi*t*1000); (tai galima padauginti iš atsitiktinio kintamojo w, kad būtų sukurta atsitiktinė garso funkcijos amplitudės/dB reikšmė: w = rand;)

Dešinės ausies išėjimas yra toks: Out = [nuliai (dydis (t))); s] “;

Išėjimai atkuriami per kodą: garsas (išėjimas, Fs)

Kitas žingsnis yra sukurti vartotojo sąsają su kodo įrašais, ar vartotojas girdėjo garsą, ar ne.

Pirmiausia sukurkite figūrą ir nustatykite, kurioje vietoje figūra pasirodys: gcbf = figūra ('pos', [30 800 350 150]);

*** Jei mygtukas jums nepasirodo, figūros padėtis, kaip parodyta aukščiau esančiame masyve, gali būti neteisingai padėta jūsų kompiuteriui. Norėdami tai išspręsti, pakeiskite 30 ir 800 reikšmes į norimą padėtį. Pvz., Turint [0 0 350 150] bus rodomas „gui“mygtukas apatiniame kairiajame monitoriaus kampelyje. ***

Kai vartotojas girdi garsą, įrašomas perjungimo mygtukas, o padėtį ir ekraną galima pritaikyti: tb = uicontrol („Stilius“, „perjungimo mygtukas“, „Styga“, „Paspauskite mygtuką, kai išgirsite garsą“, tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Šis konkretus kodas turi atnaujinti kodą, o tušti vektoriai prideda vertę, jei paspaudžiamas mygtukas.

Tada sukurkite laukimo funkciją, kad gautumėte mygtuko atsaką, ir paspauskite mygtuką, kai paspausite: h = randi ([4, 7]); uiwait (gcbf, h); (mes padarėme atsitiktinį kintamąjį h, kad dalyviai negalėtų apgauti ir nustatyti, kiek sekundžių reikia atsakyti.)

Baigę ciklą, dažnio išvesties kintamąjį (freq_right) laikykite Hz, todėl palikite jį ramybėje. Tada konvertuokite dB_right kintamąjį iš stiprintuvų į decibelus, naudodami lygtį: dB_right = mag2db (amp_right)*(-1);

Tada pridėkite funkciją: uždarykite viską. tai pašalins visas nereikalingas figūras, kurios galėjo pasirodyti.

Pridėkite maždaug 10 sekundžių pauzės funkciją, kad vartotojas galėtų prisitaikyti ir pasiruošti kairei ausiai.

4 žingsnis: sukurkite tą patį kodą kairiajai ausiai

Sukurkite tą patį kodą kairiajai ausiai
Sukurkite tą patį kodą kairiajai ausiai

Pakartokite dešinės ausies kodą, kad sukurtumėte kitą segmentą, kuris tikrina kairę ausį. Vienintelis skirtumas yra tai, iš kurio išėjimo kanalo sklinda garsas. Norėdami tai padaryti, apverskite kintamojo Out masyvo reikšmių tvarką. Tai turėtų atrodyti taip:

Išeitis = [s; nuliai (dydis (t))] “;

Tokiu būdu iš dešiniojo kanalo neskambės garsas, o iš kairiojo kanalo!

5 žingsnis: Padarykite šalia esančią figūrą, kad palygintumėte duomenis

Norėdami palyginti duomenis, padarykite paveikslėlį šalia
Norėdami palyginti duomenis, padarykite paveikslėlį šalia
Norėdami palyginti duomenis, padarykite paveikslėlį šalia
Norėdami palyginti duomenis, padarykite paveikslėlį šalia

Dabar sudarykite diagramą, kad parodytumėte duomenis! Jūs sudedate du grafikus į vieną figūrą, todėl padarykite tai!

paveikslas (1); papildomas sklypas (1, 2, 1); *** antrasis sklypas (1, 2, 2)

Prie kiekvieno papildomo sklypo pridėkite šiuos lopus su konkrečiomis spalvomis ir koordinatėmis. Šie skyriai yra grafike, priklausomai nuo klausos praradimo laipsnio. Panašiai:

pleistras ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold %

tekstas (3173, 8, 'Normalus');

pleistras ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % žalias

tekstas (3577, 33, 'Švelnus');

pleistras ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % žalsvai mėlynos spalvos

tekstas (2870, 48, 'Vidutinis');

pleistras ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % mėlyna

tekstas (1739, 62, 'Vidutiniškai sunkus');

pleistras ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % violetinė

tekstas (3142, 80, „Sunkus“);

pleistras ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % raudona

tekstas (3200, 103, „Gilus“)

Tada pridėkite kairės ir dešinės sklaidos brėžinius! Mes galime jums pateikti bendrą šalies vidurkį! Čia:

Nat_FreqL = [250 500 1000 2000 4000 8000]; % x reikšmė, kairioji ausisNat_dBL = [10 3 10 15 10 15]; % y reikšmė

Nat_FreqR = [250 500 1000 2000 4000 8000]; % dešinė ausis

Nat_dBR = [10 5 10 15 10 15];

Sklaidos brėžiniai turėtų atskirti kairįjį ir dešinįjį taškus. Galite daryti kryžius ir apskritimus!

NL = sklaida (Nat_FreqL, Nat_dBL, 'bx'); % pavaizduoti mėlyni kryžminiai taškaiNR = sklaida (Nat_FreqR, Nat_dBR, 'ro'); % piešia raudonus apskritimus

Sukurkite legendą nacionaliniam grafikui, priskirdami ją konkretiems kintamiesiems: legenda ([NL NR], {'title1', 'title2'});

Nustatykite savo x ribą nuo 250 iki 8000 Hz, o y ribą -nuo -10 iki 120 dB. Nepamirškite pakeisti vertikalių erkių naudodami yticks ()

Pažymėkite x ašį „Frequency Hz“, o y ašį - Pitch dB.

Pakeiskite y ašį, surinkdami ašį su ax = gca

Tada susiekite y krypties ypatybę su ja: ax. YDir = 'atvirkštinė

Dabar antrojo kodas yra maždaug toks pat, bet be legendos ir grafikų, skleidžiančių kintamuosius iš kairės ir dešinės, grafikų.

Po viso to pridėkite pauzės funkciją maždaug 10 sekundžių, kad vartotojas galėtų peržiūrėti jų rezultatus.

6 veiksmas: jei norite, pridėkite nedidelį padėkos pranešimą

Jei norite, pridėkite nedidelę padėkos žinutę!
Jei norite, pridėkite nedidelę padėkos žinutę!

Tai tik linksmybėms, jei norite, bet pridėkite dar vieną imread (), imshow () ir uiwait (msgbox ()) už padėką ir atsisveikinimą! Be to, nepamirškite įdėti clf; uždaryti viską; clc; kad viską uždarytum. Geras darbas, kad padarei!

Rekomenduojamas: