Sisällysluettelo:
- Vaihe 1: Luo käyttäjätulo käyttäjän iän analysoimiseksi
- Vaihe 2: Testaa käyttäjän ääni
- Vaihe 3: Tee oikean korvan audiometriatesti
- Vaihe 4: Luo sama koodi vasemmalle korvalle
- Vaihe 5: Tee vierekkäinen kuva tietojen vertaamiseksi
- Vaihe 6: Lisää pieni kiitosviesti, jos haluat
Video: Aikuisten kuulotestin tekeminen MATLABin avulla: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
VASTUUVAPAUSLAUSEKE: Testimme EI ole lääketieteellinen diagnoosi, eikä sitä tule käyttää sellaisenaan. Jos haluat mitata kuulosi tarkasti, ota yhteys lääkäriin.
Käyttämällä jo olemassa olevia materiaaleja ryhmämme teki kuulotestin. Testi on tarkoitettu vain aikuisille ja teini -ikäisille, koska pienten lasten kuulo vaihtelee eri alueilla ja sen saa mitata vain ammattilainen.
Tämä projekti sai inspiraation työskennellessään BME MATLAB -luokassamme ja leikkiessä siniaaltojen äänillä. Olimme kiinnostuneita tavoista muuttaa siniaalto niin, että se toistaa äänen eri kentillä.
Tähän projektiin tarvitsimme vain tietokoneen, jossa on MATLAB R2018b, ja pari nappikuuloketta. Lisäsimme alkuperäisen hahmon, Francesin, maskotiksi, jotta ohjelma olisi humoristisempi.
Vaihe 1: Luo käyttäjätulo käyttäjän iän analysoimiseksi
Tämän koodin ensimmäinen osa on syöttää käyttäjä, joka päättää, ovatko he tarpeeksi vanhoja kuulotestin suorittamiseen. Miksi et tekisi sitä lisäämällä myös typeriä kuvia maskotistamme Francesista? Voit tehdä tämän lataamalla mukana toimitetun zip -tiedoston ja purkaaksesi sen tiedostoon, joka voidaan vetää koodiin. Jatka erälatauksella piirustusten täyttämää tiedostoa käyttämällä tätä:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Voidaksemme esittää viestien laatikot ja suuret kuvat piirustuksista käytimme tätä hauskaa tapaa näyttää Frances sinulle. Yksinkertaisesti kuvittele valitsemasi kuva muodossa: variable = imread ('nameofpicture.jpg');
Jatka sen näyttämistä käyttämällä imshow (muuttuja); se näkyy hahmona MatLabissasi, kun käytät sitä!
Seuraavaksi ovat viestikentät, joita käytetään koko koodissa. uiwait () on toiminto, jossa koodi pysäytetään, kunnes uiwaitille valittu toiminto on valmis. Tämä valittu toiminto on msgbox ('viesti', 'otsikko', 'kuvake')!
Voit vapaasti muuttaa Francesin sanomia niin kauan kuin noudatat yllä olevaa msgbox () -muotoa. Jos haluat käyttää Frances -kuvia, merkitse 'kuvake' mukautetuksi ja jatka pilkulla ja valitsemasi kuvan imread -muuttujalla! Voit myös käyttää esiasetettuja kuvaketyyppejä. sen pitäisi näyttää tältä:
hei = imread ('Regular.jpg'); % lukee kuvan ladatusta näytöstä (hei); uiwait (msgbox ('Hei ja kiitos, että valitsit kuulokokeen! Tämä on Frances ja hän auttaa sinua tänään testissäsi!', 'Tervetuloa!', 'custom', hei));
Luo seuraavaksi syöttö, joka kysyy käyttäjän ikää!
UserAge = input ('Kuinka vanha (vuotta) olet ennen tämän testin aloittamista? (Esim. 32, 56,…) n', 's');
HUOMAUTUS: jos luvut ovat outoja ja niitä on liikaa, käytä sulje kaikki, jos haluat poistaa aiemmat luvut koodin toimiessa
Luo sitten kytkinkotelorakenne! Muista, että käyttäjän syöttö on merkkijono ja sinun on muunnettava se numeeriseksi arvoksi. Joten käytä str2double (UserAge). Jokaisella tapauksella tulisi olla ikä -alueita, kuten 4–6 tai 18–40. Jotta muuttuja vahvistaisi todeksi jossakin tapauksessa, käytä num2cell (taulukko) seuraavasti:
kytkin str2double (UserAge) % muuttaa muuttujan merkkijonosta numeeriseksi arvoksi tapaus num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Olet sikiö! Francesin mielestä sinun pitäisi tehdä kuulotesti lääkärin kanssa!', 'Testi kielletty!', 'custom', frances));
palata
Aiemmat ryhmät tulee palauttaa, jotta käyttäjä ei voi jatkaa koodin käyttöä.
Muista lopettaa kotelorakenne ja sulkea kaikki luvut.
Vaihe 2: Testaa käyttäjän ääni
Tämä segmentti on tarkoitettu varmistamaan, että osallistujan ääni laitteellaan ei ole liian hiljainen eikä liian voimakas.
Antaakseen käyttäjälle varoituksen viesti -ruutu ponnahtaa esiin ja odottaa vahvistusta käyttäjältä ennen kuin jatkat äänen kanssa: uiwait (msgbox ('Ennen kuin testi alkaa, haluamme tehdä äänitestin varmistaaksesi äänenvoimakkuuden on oikein! Valmis? ',' Odota! ',' help '));
Siniaaltoa toistetaan amplitudilla 1 ja näytteenottotaajuudella 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); ääni (y, SampleRate);
Käyttäjältä kysytään sitten kysymys, johon käyttäjä on antanut vastauksen: Q = input ('Kuuletko äänen? [Y/n] n', 's');
Sitten on jonkin aikaa etsittävä, milloin Q == 'n', jos tosi, ääni toistuu ja kysyi käyttäjältä uudelleen, kunnes vastaus on muuttunut n: stä y: ksi: Q == 'n' jos strcmp (Q, 'n') disp ('Käännä tietokoneen äänenvoimakkuus kovemmaksi.'); odota_ääni; tauko (2); Q = tulo ('Kuuletko äänen nyt? [Y/n] n', 's'); loppu loppu
Sitten on hetki odottamista ennen kuin siirrytään koodin varsinaiseen tutkimusosaan.
Vaihe 3: Tee oikean korvan audiometriatesti
Tässä koodissa silmukka suoritetaan 6 iteraatiota vaihtelevalla taajuudella ja äänenvoimakkuudella kullekin korvalle. Riippuen korvasta, jonka haluat testata, Out -muuttujan ääni kuuluu yhdellä rivillä ja nollat toisella.
Ensin teet kaksi tyhjää rivivektoria käyttäjän kuultavien äänen taajuuksien ja amplitudin tallentamiseksi.
Tämä osa on indeksoitu silmukalle, vaikka kuinka monta ääntä haluat toistaa, jos haluat satunnaistaa toistetut taajuudet ja amplitudin.
F on taajuus: r = (rand*10000); Fs = 250 + r; (rand -funktion tarkoituksena on luoda satunnaisesti luotu taajuus) t on tietty aika, jonka eteneminen määritetään seuraavasti: t = linspace (0, Fs*2, Fs*2); s on siniaalto: s = sin (2*pi*t*1000); (tämä voidaan kertoa satunnaismuuttujalla w ja luoda äänitoiminnolle satunnainen amplitudi/dB -arvo: w = rand;)
Oikean korvan ulostulo on: Out = [nollia (koko (t))); s] ';
Lähdöt toistetaan koodilla: ääni (Out, Fs)
Seuraava vaihe on tehdä käyttöliittymä kooditietueisiin, onko käyttäjä kuullut äänen vai ei.
Tee ensin kuva ja määritä paikka, jossa kuva näkyy: gcbf = luku ('pos', [30 800 350 150]);
*** Jos painike ei näy sinulle, kuvan sijainti, kuten yllä olevasta taulukosta näkyy, saattaa olla sijoitettu väärin tietokoneellesi. Ratkaise tämä muuttamalla 30- ja 800 -arvot haluamaasi asentoon. Esimerkiksi [0 0 350 150] -merkin käyttäminen synnyttää gui -painikkeen näytön vasemmassa alakulmassa. ***
Vaihtopainike tallennetaan, kun käyttäjä kuulee äänen, ja sijainti ja näyttö voidaan mukauttaa: tb = uicontrol ('Tyyli', 'vaihtopainike', 'Jono', 'Paina painiketta, kun kuulet äänen', '' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Backback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Tällä koodilla on koodin jatkaminen ja tyhjät vektorit lisäävät arvon, jos painiketta painetaan.
Luo sitten odotusfunktio napin vasteen vastaanottamiseksi ja aktivoi painikkeen koodi, kun sitä painetaan: h = randi ([4, 7]); uiwait (gcbf, h); (Teimme satunnaismuuttujan h, jotta osallistujat eivät voineet huijata ja määrittää vastaamiseen tarvittavia sekunteja.)
Kun silmukka on valmis, pidä taajuuslähtömuuttuja (freq_right) Hz: nä, joten jätä se rauhaan. Muunna sitten dB_right-muuttuja ampeereista desibeleiksi käyttämällä yhtälöä: dB_right = mag2db (amp_right)*(-1);
Lisää sitten toiminto: sulje kaikki. tämä poistuu tarpeettomista luvuista, jotka ovat mahdollisesti nousseet esiin.
Lisää taukotoiminto, noin 10 sekuntia, jotta käyttäjä voi sopeutua ja valmistautua vasempaan korvaan.
Vaihe 4: Luo sama koodi vasemmalle korvalle
Toista oikean korvan koodi ja tee seuraava segmentti, joka testaa vasenta korvaa. Ainoa ero on muuttaa, mistä lähtökanavasta ääni tulee. Voit tehdä tämän kääntämällä muuttujan Out taulukon arvojärjestyksen. Sen pitäisi näyttää tältä:
Ulos = [s; nollia (koko (t))] '';
Tällä tavalla ääni ei tule oikeasta kanavasta, vaan vasemmasta kanavasta!
Vaihe 5: Tee vierekkäinen kuva tietojen vertaamiseksi
Tee nyt kaavio tietojen näyttämiseksi! Laitat kaksi kaaviota yhteen kuvaan, joten tee tämä!
kuva (1); osakaavio (1, 2, 1); *** osaosuus (1, 2, 2) toista varten
Lisää jokaiseen osajoukkoon nämä värit ja koordinaatit. Nämä osiot poistetaan kaaviosta sen mukaan, kuinka suuri kuulon heikkeneminen on. Niin kuin:
laastari ([250 8000 8000 250], [25 25-10-10], [1,00, 0,89, 0,29]); % yellowhold %
teksti (3173, 8, 'Normaali');
laastari ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % vihreää
teksti (3577, 33, 'Lievä');
laastari ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % syaania
teksti (2870, 48, 'Kohtalainen');
laastari ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % sininen
teksti (1739, 62, 'Kohtalaisen vaikea');
laastari ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % violetti
teksti (3142, 80, 'Vaikea');
laastari ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % punainen
teksti (3200, 103, 'Syvä')
Lisää sitten vasen ja oikea sirontakuvaaja! Voimme tarjota sinulle yleisen kansallisen keskiarvon! Tässä:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-arvo, vasen korvaNat_dBL = [10 3 10 15 10 15]; % y-arvo
Nat_FreqR = [250 500 1000 2000 4000 8000]; % oikea korva
Nat_dBR = [10 5 10 15 10 15];
Hajautuskäyrien tulisi erottaa vasen ja oikea piste. Voit tehdä ristejä ja ympyröitä!
NL = hajonta (Nat_FreqL, Nat_dBL, 'bx'); % piirtää sinisiä ristipisteitäNR = hajonta (Nat_FreqR, Nat_dBR, 'ro'); % piirtää punaisia ympyröitä
Tee kansalliselle kuvaajalle selite määrittämällä se tietyille muuttujille: selite ([NL NR], {'title1', 'title2'});
Aseta x -raja 250 -8000 Hz ja y -raja -10 -120 dB. Muista muuttaa pystysuuntaiset punkit yticksillä ()
Merkitse x -akselillesi "Frequency Hz" ja y -akselillesi "Pitch dB".
Käännä y -akseli keräämällä akseli axilla = gca
Sido sitten y -suunnan ominaisuus siihen seuraavasti: ax. YDir = 'reverse
Nyt toisen koodi on suunnilleen sama, mutta ilman selitystä ja piirtämättä hajontakaavioita vasemman ja oikean testin muuttujilla.
Kaiken tämän jälkeen lisää taukotoiminto noin 10 sekunniksi, jotta käyttäjä voi tarkastella tuloksia.
Vaihe 6: Lisää pieni kiitosviesti, jos haluat
Tämä on vain huvin vuoksi, jos haluat, mutta lisää toinen imread (), imshow () ja uiwait (msgbox ()) kiitos ja hyvästit! Muuten, muista laittaa clf; sulje kaikki; clc; kaiken sulkemiseksi. Hyvä työ teit sen!
Suositeltava:
Raspberry Pi: n hallinta Matlabin avulla: 5 vaihetta
Raspberry Pi: n hallinta Matlabin avulla: Hei, tämä opetusohjelma käsittelee päätön vadelmapii: n hallintaa matlabin avulla. Saatat joutua asentamaan matlabin uusimpaan versioon, jos haluat tukea uudemmalle vadelmapi -levylle
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta
Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
Aivokasvaimen magneettikuvaus Matlabin avulla: 6 vaihetta
Aivokasvaimen magneettikuvaus Matlabin avulla: Kirjoittaja: Madhumita Kannan, Henry Nguyen, Ashley Urrutia Avila, Mei JinTämä MATLAB -koodi on ohjelma, joka tunnistaa potilaan aivojen magneettikuvauksessa löydetyn kasvaimen tarkan koon, muodon ja sijainnin. Tämä ohjelma on suunniteltu toimimaan alun perin kasvainten havaitsemisen kanssa
Diabeettisen retinopatian automaattinen diagnoosi MATLABin kautta: 33 vaihetta
Diabeettisen retinopatian automaattinen diagnoosi MATLABin kautta: (Katso yllä oleva koodi) Diabeettinen retinopatia on diabetekseen liittyvä silmäsairaus, jonka aiheuttaa korkea verensokeri. Korkea verensokeritaso saa verkkokalvon verisuonet turpoamaan, mikä johtaa verisuonten laajentumiseen ja jopa
Matlabin perusteet: 6 vaihetta
Matlabin perusteet: Tämä ohje sisältää joitain matlabin perustoimintoja. Opit tekemään matlabista suorittamaan jaksollisen funktion sisäisesti ja piirtämään sen ja kuinka vetää sama jaksollinen funktio sen sijaan Excel -tiedostosta ja piirtämään se.Nämä toiminnot