Sisukord:
- Samm: looge kasutaja sisendi kasutaja vanuse analüüsimiseks
- 2. samm: testige kasutaja heli
- 3. samm: tehke parema kõrva audiomeetria test
- Samm: looge vasaku kõrva jaoks sama kood
- Samm: tehke andmete võrdlemiseks kõrvuti joonis
- 6. samm: kui soovite, lisage väike tänusõnum
Video: Täiskasvanute kuulmistesti tegemine MATLABi abil: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
VASTUTUS: Meie test EI OLE meditsiiniline diagnostika ja seda ei tohiks sellisena kasutada. Kuulmise täpseks mõõtmiseks pöörduge arsti poole.
Kasutades juba olemasolevaid materjale, tegi meie rühm kuulmistesti. Meie test on mõeldud kasutamiseks täiskasvanutele ja teismelistele ainult seetõttu, et väikelaste kuulmine on erinevates vahemikes ja seda peaks mõõtma ainult professionaal.
See projekt sai inspiratsiooni meie BME MATLAB klassis töötades ja siinuslainete helidega mängides. Meid huvitas viis, kuidas siinuslainet saaks muuta, et esitada heli erinevatel kõrgustel.
Selle projekti jaoks oli meil vaja ainult arvutit, milles töötab MATLAB R2018b, ja paar kõrvaklappe. Programmi humoorikamaks muutmiseks kaasasime maskottina algupärase tegelase Francesi.
Samm: looge kasutaja sisendi kasutaja vanuse analüüsimiseks
Selle koodi esimene osa on teha kasutaja sisend, mis otsustab, kas ta on piisavalt vana, et kuulmistesti teha. Miks mitte seda teha, lisades rumalaid pilte ka meie maskottist Francesist? Selleks laadige alla kaasas olev zip -fail ja ekstraheerige see seejärel faili, mille saab koodi üles tõmmata. Jätkake joonistega faili üleslaadimist, kasutades järgmist:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Sõnumikastide ja jooniste suurte piltide esitamiseks kasutasime seda lõbusat meetodit, kuidas teile Francesit näidata. Lihtsalt imread oma valitud pilti vormingus: variable = imread ('nameofpicture.jpg');
Seejärel jätkake selle kuvamist, kasutades imshow (muutuja); siis kuvatakse see teie MatLabis figuurina selle käivitamisel!
Järgmisena on sõnumikastid, mida kasutatakse kogu koodi ulatuses. uiwait () on funktsioon, mille korral kood peatatakse kuni uiwaiti jaoks valitud toimingu lõpetamiseni. See valitud funktsioon on msgbox ('sõnum', 'pealkiri', 'ikoon')!
Võite Francesi sõnumeid vabalt muuta, kui järgite ülaltoodud vormingut msgbox (). Kui soovite kasutada Francesi pilte, märgistage „ikoon“kohandatuks ja jätkake seda koma ja valitud pildi imreadi muutujaga! Võite kasutada ka eelseadistatud ikoonitüüpe. see peaks välja nägema selline:
tere = imread ('Regular.jpg'); % loeb pilti üleslaaditud failist (hi); uiwait (msgbox ('Tere ja aitäh, et valisite meie kuulmistesti! See on Frances ja ta aitab teid täna teie testiga!', 'Tere tulemast!', 'kohandatud', tere));
Seejärel looge sisend, mis küsib kasutaja vanust nii!
UserAge = input ('Enne kui alustame seda testi, kui vana (aastat) olete? (Nt 32, 56,…) n', 's');
MÄRKUS. Kui arvud on imelikud ja neid on liiga palju, kasutage koodi sulgemise ajal varasemate arvude eemaldamiseks nuppu Sulge kõik
Seejärel looge lülituskorpuse struktuur! Pidage meeles, et kasutaja sisend on string ja peate selle teisendama arvväärtuseks. Nii et kasutage str2double (UserAge). Iga juhtumi vanusevahemik peaks olema vahemikus 4 kuni 6 või 18 kuni 40. Muutuja kinnitamiseks ühe juhtumi puhul kasutage tõeks num2cell (massiivi) järgmiselt:
lüliti str2double (UserAge) % muudab muutuja stringist numbriliseks väärtuseks case num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Sa oled loode! Frances arvab, et peaksid kuulmise testi tegema hoopis arsti juures!', 'Test denied!', 'custom', frances));
tagasi
Varasemad rühmad tuleks tagastada, et takistada kasutajal koodiga jätkamist.
Ärge unustage korpuse struktuuri lõpetada ja kõik arvud sulgeda.
2. samm: testige kasutaja heli
See segment on loodud tagamaks, et osaleja heli tema seadmes pole liiga vaikne ega liiga vali.
Kasutajale mõne hoiatuse saamiseks ilmub teade ja ootab kasutaja kinnitust, enne kui jätkab heliga: uiwait (msgbox ('Enne testi algust tahaksime teha helitesti, et veenduda teie helitugevuses on õige! Valmis? ',' Oota! ',' abi '));
Siinuslaine esitatakse amplituudiga 1 ja proovivõtu sagedusega 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*patt (2*pi*200*T); heli (y, SampleRate);
Seejärel esitatakse kasutajale küsimus, mille kasutaja on vastanud: Q = sisend ('Kas sa kuuled heli? [Y/n] n', 's');
Siis tuleb mõnda aega otsida, millal Q == 'n', kui see on tõene, siis heli kordub ja küsis kasutajat uuesti, kuni vastus on muutunud n -st y -ks: samas kui Q == 'n', kui strcmp (Q, 'n') disp ('Keerake arvuti helitugevust valjemaks.'); oota_heli; paus (2); Q = sisend ('Kas sa kuuled heli praegu? [Y/n] n', 's'); lõpp lõpp
Seejärel tuleb oodata hetke enne koodi tegeliku uurimisosa juurde kandmist.
3. samm: tehke parema kõrva audiomeetria test
Selles koodis töötab silmus 6 iteratsiooni erineva sageduse ja helitugevusega iga kõrva jaoks. Sõltuvalt kõrvast, mida soovite testida, on muutuja Out ühes reas heli ja teises null.
Esmalt tehke kaks tühja rea vektorit, et salvestada kasutaja kuuldava heli sagedused ja amplituud.
See osa on indutseeritud silmuse järgi, kui palju helisid soovite esitada, kui soovite juhitud sagedusi ja amplituudi muuta.
F on sagedus: r = (rand*10000); Fs = 250 + r; (randi funktsioon on luua juhuslikult genereeritud sagedus) t on teatud ajavahemik, mille määrab kindlaks: t = linspace (0, Fs*2, Fs*2); s on siinuslaine: s = sin (2*pi*t*1000); (seda saab korrutada juhusliku suurusega w, et luua helifunktsioonile juhuslik amplituud/dB väärtus: w = rand;)
Parema kõrva väljund on: Väljas = [nullid (suurus (t))); s] ';
Väljundid esitatakse koodi kaudu: heli (Out, Fs)
Järgmine samm on luua kasutajaliides koos koodikirjetega, kas kasutaja kuulis heli või mitte.
Esmalt tehke joonis ja määrake asukoht, kus see kuvatakse: gcbf = joonis ('pos', [30 800 350 150]);
*** Kui nupp ei ilmu teile, võib joonise asukoht, nagu ülaltoodud massiiv näitab, teie arvuti jaoks valesti paigutada. Selle lahendamiseks muutke 30 ja 800 väärtust soovitud asendisse. Näiteks kui teil on [0 0 350 150], tekib monitori vasakus alanurgas gui nupp. ***
Kui kasutaja kuuleb heli, salvestatakse lülitusnupp ning asukohta ja kuva saab kohandada: tb = uicontrol ('Stiil', 'lülitusnupp', 'String', 'Vajutage heli kuuldes nuppu', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Backback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Sellel koodil on koodi jätkamine ja tühjad vektorid lisavad nupule vajutamisel väärtuse.
Seejärel looge ootamisfunktsioon nupu vastuse vastuvõtmiseks ja aktiveerige nupul vajutamisel kood: h = randi ([4, 7]); uiwait (gcbf, h); (tegime juhuslikku muutujat h, nii et osalejad ei saanud petta ja määrata vastamiseks vajalike sekundite arvu.)
Kui tsükkel on lõppenud, hoidke sagedusväljundi muutujat (freq_right) Hz -is, nii et jätke see rahule. Seejärel teisendage muutuja dB_right võimenditest detsibellideks, kasutades võrrandit: dB_right = mag2db (amp_right)*(-1);
Seejärel lisage funktsioon: sulgege kõik. see väljub kõikidest mittevajalikest arvudest, mis võisid esile kerkida.
Lisage pausifunktsioon, umbes 10 sekundit, et anda kasutajale aega kohanemiseks ja vasaku kõrva ettevalmistamiseks.
Samm: looge vasaku kõrva jaoks sama kood
Järgmise vasaku kõrva testimise segmendi tegemiseks korrake parema kõrva jaoks kasutatud koodi. Ainus erinevus on muuta, millisest väljundkanalist heli tuleb. Selleks pöörake muutuja Out massiivi väärtuste järjekorda. See peaks välja nägema selline:
Väljas = [s; nullid (suurus (t))]”;
Seda tehes ei tule heli paremast kanalist, vaid vasakust kanalist!
Samm: tehke andmete võrdlemiseks kõrvuti joonis
Nüüd tehke andmete kuvamiseks graafik! Paned kaks graafikut ühte kujundisse, nii et tee seda!
joonis (1); alamjoon (1, 2, 1); *** alamplaan (1, 2, 2) teise jaoks
Lisage iga alamkrundi jaoks need plaastrid, millel on kindlad värvid ja koordinaadid. Need jaotised eraldatakse graafikust sõltuvalt sellest, kui suur on kuulmislangus. Nii nagu:
plaaster ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold on % Alamjoonisel on nüüd järgmised plaastrid ja hajumiskohad
tekst (3173, 8, 'Tavaline');
plaaster ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % roheline
tekst (3577, 33, 'Kerge');
plaaster ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % tsüaan
tekst (2870, 48, 'Mõõdukas');
plaaster ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % sinine
tekst (1739, 62, 'Mõõdukalt raske');
plaaster ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % lilla
tekst (3142, 80, 'Raske');
plaaster ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % punane
tekst (3200, 103, „Põhjalik”)
Seejärel lisage vasak ja parem hajumisjoonised! Saame pakkuda teile üldist riigi keskmist! Siin:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-väärtus, vasak kõrvNat_dBL = [10 3 10 15 10 15]; % y-väärtus
Nat_FreqR = [250 500 1000 2000 4000 8000]; % parem kõrv
Nat_dBR = [10 5 10 15 10 15];
Hajutusgraafikud peaksid eristama vasakut ja paremat punkti. Võiks teha riste ja ringe!
NL = hajumine (Nat_FreqL, Nat_dBL, 'bx'); % joonistab siniseid ristpunkteNR = hajumine (Nat_FreqR, Nat_dBR, 'ro'); % joonistab punaseid ringe
Tehke rahvusgraafile legend, määrates selle konkreetsetele muutujatele: legend ([NL NR], {'title1', 'title2'});
Seadke oma x -piirmääraks 250 kuni 8000 Hz ja y -piiriks -10 kuni 120 dB. Ärge unustage muuta oma vertikaalseid puuke yticksiga (
Märkige oma x -teljele "Frequency Hz" ja y -teljele "Pitch dB".
Pöörake y -telg ümber, kogudes telje koos ax = gca
Seejärel seo y suuna omadus sellega: ax. YDir = 'reverse
Nüüd on teise kood umbes sama, kuid ilma legendita ja hajutamisjooniste joonistamisega vasak- ja paremkatse muutujatega.
Pärast kõike seda lisage pausifunktsioon umbes 10 sekundiks, et kasutaja saaks nende tulemusi vaadata.
6. samm: kui soovite, lisage väike tänusõnum
See on lihtsalt lõbu pärast, kui soovite, kuid tänamiseks ja hüvastijätmiseks lisage veel üks imread (), imshow () ja uiwait (msgbox ())! Peale selle ärge unustage panna clf; sulgege kõik; clc; et kõik sulgeda. Hea töö, et sa seda tegid!
Soovitan:
Raspberry Pi juhtimine Matlabi abil: 5 sammu
Raspberry Pi juhtimine Matlabi abil: Hei, see õpetus käsitleb peata vaarika pi juhtimist matlabi abil. Võimalik, et peate uuema vaarika pi plaadi toetamiseks installima matlabi uusimale versioonile
RF 433MHZ raadiojuhtimine HT12D HT12E abil - Rf -kaugjuhtimispuldi tegemine HT12E ja HT12D abil 433 MHz: 5 sammu
RF 433MHZ raadiojuhtimine HT12D HT12E abil | Rf -kaugjuhtimispuldi tegemine HT12E ja HT12D abil 433 MHz -ga: selles juhendis näitan teile, kuidas teha RADIO -kaugjuhtimispulti, kasutades 433 mhz saatja vastuvõtja moodulit koos HT12E kodeeringuga & HT12D dekoodri IC. Selles juhendis saate andmeid saata ja vastu võtta, kasutades väga odavaid KOMPONENTEID NAGU: HT
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil
Ajukasvaja MRI tuvastamine Matlabi abil: 6 sammu
Ajukasvaja MRI tuvastamine Matlabi abil: Autor: Madhumita Kannan, Henry Nguyen, Ashley Urrutia Avila, Mei Jin See programm on loodud töötama algselt kasvajate avastamisega
Matlabi MEX -faili tegemine: 3 sammu
Matlabi MEX -faili tegemine: juhised kompileeritud C -koodi Matlabi integreerimiseks. MEX tähistab MATLAB Executable. MEX-failid on dünaamiliselt lingitud alamprogrammid, mis on toodetud C- või Fortrani lähtekoodist ja mida saab koostamisel käivitada MATLAB-ist samamoodi nagu