Sadržaj:
- Korak 1: Kreirajte korisnički unos za analizu starosti korisnika
- Korak 2: Testirajte zvuk za korisnika
- Korak 3: Napravite test audiometrije za desno uho
- Korak 4: Kreirajte isti kod za lijevo uho
- Korak 5: Napravite sliku jednu pored druge za usporedbu podataka
- Korak 6: Dodajte malu poruku zahvale ako želite
Video: Kako napraviti test sluha za odrasle koristeći MATLAB: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
ODRICANJE: Naš test NIJE medicinska dijagnostika i ne bi se trebao koristiti kao takav. Za precizno mjerenje sluha posjetite liječnika.
Koristeći materijale koje smo već imali, naša grupa je napravila test sluha. Naš test je za odrasle i tinejdžere samo zato što sluh male djece ima različite raspone i treba ih mjeriti samo stručnjak.
Ovaj projekt je inspiriran dok smo radili u klasi BME MATLAB i svirali sa zvukovima sinusnih valova. Zanimali su nas načini na koje se sinusni val može promijeniti tako da reproducira zvuk na različitim visinama.
Sve što nam je trebalo za ovaj projekat bio je računar sa MATLAB R2018b i par slušalica. Uključili smo originalnog lika, Frances, kao maskotu kako bismo program učinili duhovitijim.
Korak 1: Kreirajte korisnički unos za analizu starosti korisnika
Prvi dio ovog koda je unijeti korisnički unos u kojem se odlučuje jesu li dovoljno stari za nastavak testiranja sluha. Zašto to ne učinite dodavanjem glupih slika naše maskote, Frances? Da biste to učinili, preuzmite uključenu zip datoteku, a zatim je ekstrahirajte u datoteku koja se može povući u kôd. Nastavite s paketnim otpremanjem datoteke pune crteža koristeći ovo:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Kako bismo predstavili okvire s porukama i velike slike crteža, upotrijebili smo ovu zabavnu metodu da vam pokažemo Frances. Jednostavno imreadujte sliku po svom izboru u formatu: variable = imread ('nameofpicture.jpg');
Zatim nastavite s prikazom pomoću imshow (varijabla); tada će se prikazati kao brojka u vašem MatLabu kada je pokrenete!
Slijede okviri poruka koji se koriste u cijelom kodu. uiwait () je funkcija u kojoj se kôd zaustavlja sve dok se funkcija koja je izabrana za uiwait ne završi. Ova odabrana funkcija je msgbox ('poruka', 'naslov', 'ikona')!
Možete slobodno promijeniti poruke koje Frances kaže sve dok slijedite gornji format msgbox (). Ako želite koristiti Frances slike, označite 'icon' kao 'custom' i nastavite sa zarezom i varijablom imread slike koju ste odabrali! Također možete koristiti unaprijed postavljene tipove ikona. trebalo bi da izgleda ovako:
hi = imread ('Regular.jpg'); % čita sliku iz datoteke uploadedimshow (zdravo); uiwait (msgbox ('Zdravo i hvala vam što ste odabrali naš test sluha! Ovo je Frances i on će vam danas pomoći s vašim testom!', 'Dobro došli!', 'prilagođeno', zdravo));
Zatim kreirajte unos koji tako pita o dobi korisnika!
UserAge = input ('Prije nego što započnemo ovaj test, koliko imate (godina)? (Npr. 32, 56, …) n', 's');
NAPOMENA: ako su brojke čudne, a ima ih previše, upotrijebite zatvori sve kako biste uklonili ranije brojke dok se vaš kôd pokreće
Zatim kreirajte strukturu razvodnog kućišta! Upamtite da je korisnički unos u nizu i morate to pretvoriti u brojčanu vrijednost. Zato koristite str2double (UserAge). Svaki slučaj bi trebao imati raspon dobi, kao što je 4 do 6 ili 18 do 40. da bi varijabla za provjeru bila istinita za jedan od slučajeva koristi num2cell (niz) ovako:
prebaci str2double (UserAge) % mijenja varijablu iz niza u brojčanu vrijednost slučaj num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (Francuska);
uiwait (msgbox ('Vi ste fetus! Frances misli da biste umjesto toga trebali obaviti test sluha kod ljekara!', 'Test odbijen!', 'prilagođen', frances));
povratak
Ranije grupe treba vratiti kako bi se spriječilo da korisnik nastavi s kodom.
Ne zaboravite završiti strukturu kućišta i zatvoriti sve brojke.
Korak 2: Testirajte zvuk za korisnika
Ovaj segment postoji kako bi se osiguralo da zvuk sudionika na njihovom uređaju nije ni previše tih ni preglasan.
Da biste upozorili korisnika, pojavit će se okvir s porukom i čeka na potvrdu korisnika prije nego što nastavi sa zvukom: uiwait (msgbox ('Prije početka testa, htjeli bismo napraviti audio test kako bismo bili sigurni da je vaš jačina zvuka) je li u redu! Spremni? ',' Čekaj! ',' pomoć '));
Pušta se sinusni val s amplitudom 1 i frekvencijom uzorkovanja od 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); zvuk (y, SampleRate);
Korisniku se zatim postavlja pitanje s odgovorom koji je unijeo korisnik: Q = input ('Čujete li zvuk? [Y/n] n', 's');
Zatim postoji neko vrijeme traženja kada je Q == 'n', ako je tačno, onda se zvuk ponavlja i ponovo pita korisnika sve dok se odgovor ne promijeni iz 'n' u 'y': dok je Q == 'n' if strcmp (Q, 'n') disp ('Pojačajte zvuk računara.'); wait_sound; pauza (2); Q = ulaz ('Možete li sada čuti zvuk? [Y/n] n', 's'); end end
Zatim postoji trenutak čekanja prije nego što pređete na stvarni ispitni dio koda.
Korak 3: Napravite test audiometrije za desno uho
U ovom kodu, petlja će raditi 6 iteracija sa različitim frekvencijama i jačinom za svako pojedinačno uho. Ovisno o uhu koje želite testirati, Out varijabla će imati zvuk u jednom redu, a nule u drugom.
Prvo napravite dva prazna vektora za snimanje frekvencija i amplitude zvuka koje korisnik čuje.
Ovaj dio je u indeksiranoj for petlji za koliko god zvukova želite reproducirati ako želite nasumično reproducirati frekvencije i amplitudu.
F je frekvencija: r = (rand*10000); Fs = 250 + r; (rand funkcija je stvaranje nasumično generirane frekvencije) t je određeno vrijeme napredovanja određeno: t = linspace (0, Fs*2, Fs*2); s je sinusni val: s = sin (2*pi*t*1000); (ovo se može pomnožiti sa slučajnom varijablom w da se stvori slučajna amplituda/dB vrijednost za zvučnu funkciju: w = rand;)
Izlaz za desno uho je: Out = [nule (veličina (t)); s] ';
Izlazi se reproduciraju putem koda: zvuk (Out, Fs)
Sljedeći korak je uvođenje korisničkog sučelja sa zapisima koda bez obzira je li korisnik čuo zvuk ili ne.
Prvo napravite figuru i odredite položaj u kojem će se figura pojaviti: gcbf = figure ('poz', [30 800 350 150]);
*** Ako vam se dugme ne pojavi, položaj figure, kao što je prikazano gornjim nizom, može biti pogrešno postavljen za vaš računar. Da biste to riješili, promijenite vrijednosti 30 i 800 u položaj koji želite. Na primjer, ako imate [0 0 350 150], pojavit će se gui gumb u donjem lijevom kutu monitora. ***
Dugme za prebacivanje se snima kada korisnik čuje zvuk, a položaj i prikaz se mogu prilagoditi: tb = uicontrol ('Style', 'togglebutton', 'String', 'Pritisnite dugme kada čujete zvuk', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Ovaj kod ima kod za nastavak i prazni vektori dodaju vrijednost ako se pritisne dugme.
Zatim kreirajte funkciju čekanja da unesete odgovor gumba i aktivirate kôd u gumbu kada se pritisne: h = randi ([4, 7]); uiwait (gcbf, h); (radili smo slučajnu varijablu h tako da sudionici nisu mogli varati i odrediti broj sekundi potrebnih za odgovor.)
Nakon što je petlja završena, zadržite izlaznu varijablu frekvencije (freq_right) u Hz pa je ostavite na miru. Zatim pretvorite varijablu dB_right iz pojačala u decibele koristeći jednadžbu: dB_right = mag2db (amp_right)*(-1);
Zatim dodajte funkciju: zatvori sve. ovo će ukloniti sve nepotrebne brojke koje su se mogle pojaviti.
Dodajte funkciju pauze, oko 10 sekundi, kako biste korisniku dali vremena da se prilagodi i pripremi za lijevo uho.
Korak 4: Kreirajte isti kod za lijevo uho
Ponovite kôd koji se koristi za desno uho da napravite sljedeći segment koji testira lijevo uho. Jedina razlika je u promjeni iz kojeg izlaznog kanala će doći zvuk. Da biste to učinili, preokrenite redoslijed vrijednosti niza za varijablu Out. To bi trebalo izgledati ovako:
Out = [s; nule (veličina (t))] ';
Na taj način iz desnog kanala neće izlaziti zvuk, već iz lijevog kanala!
Korak 5: Napravite sliku jednu pored druge za usporedbu podataka
Sada napravite grafikon za prikaz podataka! Stavljate dva grafikona u jednu brojku, pa to učinite!
slika (1); potcrt (1, 2, 1); *** podcrt (1, 2, 2) za drugi
Za svaki podcrt dodajte ove zakrpe sa određenim bojama i koordinatama. Ovi dijelovi grafikona zavisno od toga koliko je veliki stepen oštećenja sluha. Ovako:
zakrpa ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % Podcrt će sada sadržavati sljedeće zakrpe i raspršene karte
tekst (3173, 8, 'Normalno');
zakrpa ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % zeleno
tekst (3577, 33, 'Blago');
zakrpa ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % cijan
tekst (2870, 48, 'Umjereno');
zakrpa ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % plavo
tekst (1739, 62, 'Umjereno ozbiljno');
zakrpa ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % ljubičasta
tekst (3142, 80, 'Teško');
zakrpa ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % crveno
tekst (3200, 103, 'Dubok')
Zatim dodajte lijevo i desno raspršeno zemljište! Možemo vam pružiti opći nacionalni prosjek! Ovdje:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-vrijednost, lijevo earNat_dBL = [10 3 10 15 10 15]; % y-vrijednost
Nat_FreqR = [250 500 1000 2000 4000 8000]; % desno uho
Nat_dBR = [10 5 10 15 10 15];
Grafikoni raspršenja trebaju razlikovati lijevu i desnu točku. Mogli biste napraviti križeve i krugove!
NL = raspršivanje (Nat_FreqL, Nat_dBL, 'bx'); % iscrtava plave križne točkeNR = raspršivanje (Nat_FreqR, Nat_dBR, 'ro'); % iscrtava crvene krugove
Napravite legendu za nacionalni grafikon tako što ćete ga dodijeliti posebnim varijablama: legend ([NL NR], {'title1', 'title2'});
Postavite ograničenje x od 250 do 8000 Hz i ograničenje y od -10 do 120 dB. Ne zaboravite promijeniti vertikalne kvačice pomoću ytickova ()
Označite svoju os x "Frekvencija Hz", a os y "Nagib dB".
Obrnite os y skupljanjem osi sa ax = gca
Zatim vežite svojstvo smjera y za njega sa: ax. YDir = 'reverse
Sada je kôd za drugi otprilike isti, ali bez legende i grafikona raspršenih grafikona s varijablama iz lijevog i desnog testa.
Nakon svega ovoga dodajte funkciju pauze na oko 10 sekundi kako bi korisnik mogao pogledati svoje rezultate.
Korak 6: Dodajte malu poruku zahvale ako želite
Ovo je samo za zabavu ako želite, ali dodajte još jedan imread (), imshow () i uiwait (msgbox ()) za zahvalu i oproštaj! Osim toga, ne zaboravite staviti clf; zatvori sve; clc; kako bi sve zatvorili. Dobar posao!
Preporučuje se:
Kako napraviti RADAR koristeći Arduino za naučni projekat - Najbolji Arduino projekti: 5 koraka
Kako napraviti RADAR koristeći Arduino za naučni projekat | Najbolji Arduino projekti: Zdravo prijatelji, u ovom uputstvu pokazat ću vam kako napraviti nevjerojatan radarski sistem izgrađen pomoću arduino nano, ovaj projekt je idealan za naučne projekte i to možete lako učiniti uz vrlo malo ulaganja i šanse ako je osvajanje nagrade velika
Kako napraviti stroj za utege za bebe koristeći Arduino Nano, HX-711 mjernu ćeliju i OLED 128X64 -- Kalibracija HX-711: 5 koraka
Kako napraviti stroj za utege za bebe koristeći Arduino Nano, HX-711 mjernu ćeliju i OLED 128X64 || Kalibracija HX-711: Zdravo Instructables, Prije nekoliko dana postao sam otac slatke bebe?. Kada sam bio u bolnici otkrio sam da je težina bebe toliko važna za praćenje rasta bebe. Imam ideju? da od sebe napravim mašinu za vaganje beba.u ovom uputstvu ja
Kako napraviti pametni alarmni sistem za otkrivanje poplava koristeći Raspberry Pi i argon čestica: 6 koraka
Kako napraviti pametni alarmni sistem za otkrivanje poplava koristeći Raspberry Pi i argon čestica: Posedovanje standardnih senzora za poplave odlično je za sprečavanje ogromnih oštećenja u vašem domu ili na radnom mestu. Ali otežava prisustvo alarmu ako niste kod kuće. Naravno mogli biste ih kupiti pametno. Ovaj alarmni sistem za poplave otkriva bilo kakvu tekućinu i aktivira alarm
Kako napraviti više ESP razgovora putem ESP-NOW koristeći ESP32 i ESP8266: 8 koraka
Kako uspostaviti više ESP razgovora putem ESP-NOW-a koristeći ESP32 i ESP8266: Na mom tekućem projektu, potrebno mi je više ESP-ova za međusobno razgovaranje bez usmjerivača. Da bih to učinio, koristit ću ESP-NOW za bežičnu međusobnu komunikaciju bez usmjerivača na ESP-u
Kako napraviti kalendar djeda i baka & Spomenar (čak i ako ne znate kako napraviti spomenar): 8 koraka (sa slikama)
Kako napraviti kalendar djeda i baka & Spomenar (čak i ako ne znate kako se bilježiti): Ovo je vrlo ekonomičan (i cijenjen!) Praznični poklon za bake i djedove. Ove sam godine napravio 5 kalendara za manje od 7 dolara svaki. Materijali: 12 sjajnih fotografija vašeg djeteta, djece, nećaka, nećaka, pasa, mačaka ili druge rodbine12 različitih komada