Sadržaj:
- Korak 1: Stvorite korisnički unos za analizu dobi korisnika
- Korak 2: Testirajte zvuk za korisnika
- Korak 3: Napravite test audiometrije za desno uho
- Korak 4: Izradite 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 pomoću MATLAB -a: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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 je grupa napravila test sluha. Naš je test namijenjen odraslima i tinejdžerima samo zato što sluh male djece ima različite raspone i trebao bi ga mjeriti samo stručnjak.
Ovaj je projekt inspiriran dok smo radili u razredu BME MATLAB i svirali sa zvukovima sinusnih valova. Zanimali su nas načini na koji se sinusni val može promijeniti kako bi se reproducirao zvuk na različitim visinama.
Sve što nam je trebalo za ovaj projekt bilo je računalo s MATLAB R2018b i par slušalica. Uključili smo originalnog lika Frances kao maskotu kako bismo program učinili duhovitijim.
Korak 1: Stvorite korisnički unos za analizu dobi 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 biste učinili 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 skupni prijenos 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 prikazivati 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 ne odabere funkcija odabrana za uiwait. 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 to sa zarezom i varijablom imread slike koju ste odabrali! Također možete koristiti unaprijed postavljene vrste ikona. to bi trebalo izgledati ovako:
hi = imread ('Regular.jpg'); % čita sliku iz datoteke uploadedimshow (zdravo); uiwait (msgbox ('Pozdrav i hvala š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 stvorite 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 stvorite strukturu kućišta prekidača! Upamtite da je korisnički unos u nizu i morate ga pretvoriti u brojčanu vrijednost. Zato upotrijebite str2double (UserAge). Svaki slučaj trebao bi imati raspon dobi, kao što je 4 do 6 ili 18 do 40. kako bi varijabla za provjeru bila istinita za jedan od slučajeva koristi num2cell (niz) ovako:
switch str2double (UserAge) % mijenja varijablu iz niza u brojčanu vrijednost slučaj num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Vi ste fetus! Frances misli da biste umjesto toga trebali napraviti test sluha kod liječnika!', 'Test odbijen!', 'prilagođeno', 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 pretih ni preglasan.
Da biste upozorili korisnika, pojavit će se okvir s porukom i čeka potvrdu korisnika prije nego što nastavi sa zvukom: uiwait (msgbox ('Prije početka testiranja, htjeli bismo napraviti audio test kako bismo bili sigurni da je vaš volumen) je li u redu! Spremni? ',' Čekaj! ',' pomoć '));
Svira 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 korisničkim odgovorom: Q = ulaz ('Čujete li zvuk? [Y/n] n', 's');
Zatim postoji neko vrijeme traženja kada je Q == 'n', ako je istina, tada se zvuk ponavlja i ponovno se traži korisnik sve dok se odgovor ne promijeni iz 'n' u 'y': dok je Q == 'n' ako strcmp (Q, 'n') disp ('Pojačajte glasnoću računala.'); čekaj_zvuk; stanka (2); Q = ulaz ('Možete li sada čuti zvuk? [Y/n] n', 's'); kraj kraj
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 se izvoditi 6 iteracija s različitim frekvencijama i glasnoćom za svako pojedinačno uho. Ovisno o uhu koje želite testirati, varijabla Out ć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 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 koje napreduje određeno prema: 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 kako bi se stvorila slučajna vrijednost amplitude/dB za funkciju zvuka: 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 je li korisnik čuo zvuk ili ne.
Prvo napravite lik i odredite položaj u kojem će se lik pojaviti: gcbf = figure ('pos', [30 800 350 150]);
*** Ako se gumb ne pojavi za vas, položaj figure, kao što je prikazano gornjim nizom, može biti pogrešno postavljen za vaše računalo. Da biste to riješili, promijenite vrijednosti 30 i 800 u željeni položaj. Na primjer, ako imate [0 0 350 150], pojavit će se gui gumb u donjem lijevom kutu monitora. ***
Prekidač je napravljen za snimanje kada korisnik čuje zvuk, a položaj i prikaz se mogu prilagoditi: tb = uicontrol ('Style', 'togglebutton', 'String', 'Pritisnite gumb kad č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 gumb.
Zatim stvorite funkciju čekanja za unos odgovora gumba i aktivirajte 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 frekvencijsku izlaznu varijablu (freq_right) u Hz pa je ostavite na miru. Zatim pretvorite varijablu dB_right iz pojačala u decibele pomoću jednadžbe: dB_right = mag2db (amp_right)*(-1);
Zatim dodajte funkciju: zatvori sve. ovo će izaći iz svih nepotrebnih brojki 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: Izradite isti kod za lijevo uho
Ponovite kôd koji se koristi za desno uho kako biste napravili sljedeći segment koji testira lijevo uho. Jedina razlika je promjena s kojeg izlaznog kanala će zvuk dolaziti. Da biste to učinili, preokrenite redoslijed vrijednosti niza za varijablu Out. To bi trebalo izgledati ovako:
Izlaz = [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); podcrt (1, 2, 1); *** podcrt (1, 2, 2) za drugi
Za svaki podcrt dodajte ove zakrpe s određenim bojama i koordinatama. Ovi dijelovi s grafikona ovisno o tome koliko je velik stupanj 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]); % Crvena
tekst (3200, 103, 'Duboko')
Zatim dodajte lijevo i desno raspršeno zemljište! Možemo vam dati opći nacionalni prosjek! Ovdje:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-vrijednost, lijevo uhoNat_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 trebali bi 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 dodijelivši ga posebnim varijablama: legend ([NL NR], {'title1', 'title2'});
Postavite svoje ograničenje x od 250 do 8000 Hz i ograničenje y od -10 do 120 dB. Ne zaboravite promijeniti svoje okomite kvačice pomoću ytickova ()
Osi x označite kao "Frekvencija Hz", a osi y "Nagib dB".
Preokrenite os y skupljanjem osi s ax = gca
Zatim vežite svojstvo smjera y za njega s: 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 10 -ak 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 zatvorio. Dobar posao ti je uspjelo!
Preporučeni:
LLLT LED terapija crvenim svjetlom za gubitak sluha u ušima: 4 koraka
LLLT LED terapija crvenim svjetlom za gubitak sluha u ušima: Imam bijesan tinitus (zujanje u ušima) otkad se sjećam. Dakle, nije došlo do " brzog rješavanja " čini se da to pomaže u ublažavanju. Neki misle da tinitus može biti reakcija na antibiotike, reakcija na steroide, osjetljivost
Uradi sam -- Kako napraviti Spider robota kojim se može upravljati pomoću pametnog telefona pomoću Arduino Uno: 6 koraka
Uradi sam || Kako napraviti Spider robota koji se može kontrolirati pomoću pametnog telefona pomoću Arduino Uno: Dok izrađujete Spider robota, možete naučiti toliko stvari o robotici. Kao što je izrada robota zabavna, ali i izazovna. U ovom videu pokazat ćemo vam kako napraviti Spider robota, kojim možemo upravljati pomoću našeg pametnog telefona (Androi
Izjednačeno pojačalo za slušalice za osobe oštećenog sluha: 10 koraka (sa slikama)
Izjednačeno pojačalo za slušalice za osobe oštećenog sluha: Moje potrebe Prije nekoliko mjeseci opremljen sam slušnim aparatima kako bih kompenzirao gubitak osjetljivosti na visoke frekvencije, uzrokujući prigušivanje zvukova i poteškoće u razlikovanju sibilanata (npr. "S" i "F") . Ali pomagala ne daju ništa
Obavijest o zvonu na vratima za osobe oštećenog sluha putem kućne automatizacije (ESP-sada, MQTT, Openhab): 3 koraka
Obavijest o zvonu na vratima za osobe oštećenog sluha putem kućne automatizacije (ESP-sada, MQTT, Openhab): U ovom Instructable-u pokazat ću vam kako sam integrirao svoje normalno zvono na kućnu automatizaciju. Ovo rješenje je vrlo pogodno za osobe s oštećenim sluhom. U mom slučaju koristim ga za dobivanje obavijesti ako je soba zauzeta i bučna na rođendanskoj zabavi djece. Ja
Kako napraviti bespilotnu letjelicu pomoću Arduina UNO - Napravite četverokopter pomoću mikrokontrolera: 8 koraka (sa slikama)
Kako napraviti bespilotnu letjelicu pomoću Arduina UNO | Napravite četverokopter pomoću mikrokontrolera: Uvod Posjetite moj kanal na YouTubeu Drone je vrlo skup gadget (proizvod) za kupnju. U ovom postu ću raspravljati o tome kako to učiniti jeftino ?? I kako možete sami napraviti ovakav po povoljnoj cijeni … Pa u Indiji svi materijali (motori, ESC