Turinys:
- 1 veiksmas: sukurkite vartotojo įvestį vartotojo amžiui analizuoti
- 2 veiksmas: išbandykite vartotojo garso įrašą
- 3 žingsnis: atlikite dešinės ausies audiometrijos testą
- 4 žingsnis: sukurkite tą patį kodą kairiajai ausiai
- 5 žingsnis: Padarykite šalia esančią figūrą, kad palygintumėte duomenis
- 6 veiksmas: jei norite, pridėkite nedidelį padėkos pranešimą
Video: Kaip atlikti suaugusiųjų klausos testą naudojant MATLAB: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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
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šą
Š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ą
Š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
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
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ą
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:
Kaip atlikti jėgos kalibravimą naudojant „CombiTouch“: 6 žingsniai
Kaip atlikti jėgos kalibravimą naudojant „CombiTouch“: šiame vadove parodyta, kaip atlikti jėgos kalibravimą „Alto-Shaam“„CombiTouch“orkaitėje. Jei ekranas nereaguoja į prisilietimą arba suaktyvina kitą piktogramą nei ta, kurią liečiate, tiesiog vykdykite šias instrukcijas. Jei
Durų skambučio pranešimas žmonėms su klausos negalia naudojant namų automatiką (ESP-dabar, MQTT, „Openhab“): 3 žingsniai
Durų skambučio pranešimas žmonėms su klausos sutrikimais naudojant namų automatiką (ESP-dabar, MQTT, „Openhab“): šioje instrukcijoje parodysiu, kaip į savo namų automatiką įtraukiau įprastą durų skambutį. Šis sprendimas puikiai tinka žmonėms su klausos negalia. Mano atveju aš naudoju jį norėdamas gauti pranešimą, jei vaikų gimtadienio vakarėlyje kambarys yra užimtas ir triukšmingas. Aš
Kaip atlikti analoginius „Raspberry Pi“rodmenis: 5 žingsniai
Kaip atlikti analoginius rodmenis „Raspberry Pi“: Sveiki visi! Šioje pamokoje aš jums parodysiu, kaip mes galime tiesiogiai užfiksuoti analogines vertes naudodami „Raspberry Pi“. Kaip visi žinome, „Raspberry Pi“yra gana galingas mini kompiuterio modulis, populiarus tarp mėgėjų ir profesionalų
Kaip atlikti „Singleton“dizaino modelį C ++: 9 žingsniai
Kaip atlikti „Singleton“dizaino modelį naudojant „C ++“: Įvadas: Šio vadovo tikslas yra išmokyti vartotoją, kaip įdiegti pavienio dizaino modelį savo C ++ programoje. Tai darydamas, šis instrukcijų rinkinys taip pat paaiškins skaitytojui, kodėl vienetiniai elementai yra toks būdas
Kaip atlikti projekcijų žemėlapį naudojant „Pi Cap“: 9 žingsniai (su nuotraukomis)
Kaip atlikti projekcijų susiejimą naudojant „Pi Cap“: įkvėpėme jūsų projektų ir sukūrėme projekcijų susiejimo pamoką naudodami „Pi Cap“. Jei norite, kad jūsų projektas veiktų belaidžiu būdu per „WiFi“, tai yra pamoka jums. Mes naudojome „MadMapper“kaip projekcijų žemėlapių programinę įrangą