Kazalo:

Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a: 6 korakov
Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a: 6 korakov

Video: Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a: 6 korakov

Video: Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a: 6 korakov
Video: Головные боли. Упражнения опасные и безопасные 2024, November
Anonim
Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a
Kako narediti preskus sluha pri odraslih z uporabo MATLAB -a

OPOZORILO: Naš test NI medicinska diagnostika in ga kot takega ne bi smeli uporabljati. Za natančno merjenje sluha se obrnite na zdravnika.

Z uporabo materialov, ki smo jih že imeli, je naša skupina izvedla preizkus sluha. Naš test je namenjen odraslim in najstnikom, ker je sluh majhnih otrok v različnih razponih in ga mora meriti le strokovnjak.

Ta projekt je bil navdihnjen med delom v našem razredu BME MATLAB in igranjem z zvoki, ki jih oddajajo sinusni valovi. Zanimali so nas načini spreminjanja sinusnega vala za predvajanje zvoka na različnih višinah.

Za ta projekt smo potrebovali le računalnik z MATLAB R2018b in par ušesnih čepkov. Za maskoto smo vključili izvirnega junaka Frances, da je bil program bolj šaljiv.

1. korak: Ustvarite uporabniški vnos za analizo starosti uporabnika

Ustvarite uporabniški vnos za analizo starosti uporabnika
Ustvarite uporabniški vnos za analizo starosti uporabnika
Ustvarite uporabniški vnos za analizo starosti uporabnika
Ustvarite uporabniški vnos za analizo starosti uporabnika

Prvi del te kode je vnos uporabnika, v katerem se odloči, ali je dovolj star, da nadaljuje z opravljanjem testa sluha. Zakaj tega ne bi storili tudi z dodajanjem neumnih slik naše maskote Frances? Če želite to narediti, prenesite priloženo datoteko zip in jo nato izvlecite v datoteko, ki jo lahko povlečete v kodo. Nadaljujte s paketnim nalaganjem datoteke, polne risb, na naslednji način:

Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings**. Jpg';

Za predstavitev oken za sporočila in velike slike risb smo uporabili to zabavno metodo, da vam pokažemo Frances. Preprosto preberite sliko po vaši izbiri v obliki: variable = imread ('nameofpicture.jpg');

Nato nadaljujte s prikazovanjem z uporabo imshow (spremenljivka); potem se bo prikazal kot številka v vašem MatLabu, ko ga zaženete!

Sledijo polja za sporočila, ki se uporabljajo v celotni kodi. uiwait () je funkcija, pri kateri se koda ustavi, dokler ni končana funkcija, izbrana za uiwait. Ta izbrana funkcija je msgbox ('sporočilo', 'naslov', 'ikona')!

Sporočila lahko spremenite, če upoštevate zgornjo obliko sporočila msgbox (). Če želite uporabiti slike Frances, označite 'icon' kot 'custom' in nadaljujte z vejico in spremenljivko imread slike, ki ste jo izbrali! Uporabite lahko tudi prednastavljene vrste ikon. bi morala izgledati takole:

hi = imread ('Regular.jpg'); % bere sliko iz datoteke uploadedimshow (zdravo); uiwait (msgbox ('Pozdravljeni in hvala, ker ste izbrali naš test sluha! To je Frances in on vam bo danes pomagal pri vašem testu!', 'Dobrodošli!', 'po meri', zdravo));

Nato ustvarite vnos, ki tako vpraša starost uporabnika!

UserAge = input ('Koliko smo stari (leta) pred začetkom tega testa (npr. 32, 56, …) n', 's');

OPOMBA: če so številke čudne in jih je preveč, uporabite zaprite vse, da odstranite prejšnje številke, ko se koda izvaja

Nato ustvarite strukturo stikalne omarice! Ne pozabite, da je uporabniški vnos v nizu in ga morate pretvoriti v številčno vrednost. Zato uporabite str2double (UserAge). Vsak primer bi moral imeti razpon starosti, na primer od 4 do 6 ali od 18 do 40 let, da bi spremenljivko preverili kot resnično za enega od primerov uporabite num2cell (matriko) tako:

switch str2double (UserAge) % spremeni spremenljivko iz niza v številsko vrednost num2cell (0: 3)

frances = imread ('Egg.jpg');

imshow (Francija);

uiway

vrnitev

Starejše skupine je treba vrniti, da se uporabniku prepreči nadaljevanje kode.

Ne pozabite zaključiti strukture ohišja in zapreti vse številke.

Korak: Preizkusite zvok za uporabnika

Preizkusite zvok za uporabnika
Preizkusite zvok za uporabnika

Ta segment obstaja zato, da zagotovi, da zvok udeleženca na njihovi napravi ni niti pretiho niti preglasno.

Če želite uporabnika opozoriti, se prikaže okno s sporočilom, ki čaka na potrditev od uporabnika, preden nadaljuje z zvokom: uiwait (msgbox ('Pred začetkom preskusa bi radi izvedli zvočni preizkus, da se prepričate o glasnosti je prav! Pripravljen? ',' Počakaj! ',' pomoč '));

Predvaja se sinusni val z amplitudo 1 in frekvenco vzorčenja 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); zvok (y, SampleRate);

Uporabniku se nato postavi vprašanje z odgovorom, ki ga vnese uporabnik: Q = vnos ('Ali slišite zvok? [Y/n] n', 's');

Potem je treba nekaj časa iskati, kdaj je Q == 'n', če je res, se zvok ponovi in uporabnika znova vpraša, dokler se odgovor ne spremeni iz 'n' v 'y': medtem ko je Q == 'n', če strcmp (Q, 'n') disp ('Povečajte glasnost računalnika.'); wait_sound; premor (2); Q = vhod ('Ali lahko zdaj slišite zvok? [Y/n] n', 's'); konec konec

Nato traja trenutek čakanja, preden nadaljujete z dejanskim pregledom kode.

3. korak: Naredite preizkus avdiometrije za desno uho

Naredite test avdiometrije za desno uho
Naredite test avdiometrije za desno uho

V tej kodi bo zanka potekala 6 ponovitev z različnimi frekvencami in glasnostjo za vsako posamezno uho. Odvisno od ušesa, ki ga želite preizkusiti, bo imela spremenljivka Out v eni vrstici zvok, v drugi pa ničle.

Najprej naredite dva vektorja praznih vrstic za snemanje frekvenc in amplitude zvoka, ki jih uporabnik sliši.

Ta del je v indeksirani zanki za toliko zvokov, ki jih želite predvajati, če želite naključno predvajati frekvence in amplitudo.

F je frekvenca: r = (rand*10000); Fs = 250 + r; (funkcija rand je ustvariti naključno generirano frekvenco) t je določen čas, ki je napredoval, določen z: t = linspace (0, Fs*2, Fs*2); s je sinusni val: s = sin (2*pi*t*1000); (to lahko pomnožite z naključno spremenljivko w, da ustvarite naključno vrednost amplitude/dB za zvočno funkcijo: w = rand;)

Izhod za desno uho je: Out = [ničle (velikost (t)); s] ';

Izhodi se predvajajo s kodo: zvok (Out, Fs)

Naslednji korak je, da uporabniški vmesnik vključi zapise kode, ali je uporabnik slišal zvok ali ne.

Najprej naredite sliko in določite položaj, v katerem se bo slika prikazala: gcbf = figure ('pos', [30 800 350 150]);

*** Če se gumb ne prikaže za vas, je lahko položaj figure, kot prikazuje zgornja matrika, napačno nameščen za vaš računalnik. Če želite to rešiti, spremenite vrednosti 30 in 800 v poljuben položaj, ki ga želite. Na primer, če imate [0 0 350 150], se bo pojavil gumb gui v spodnjem levem kotu zaslona. ***

Gumb za snemanje, ko uporabnik sliši zvok, položaj in prikaz pa lahko prilagodite: tb = uicontrol ('Style', 'togglebutton', 'String', 'Pritisnite gumb, ko zaslišite zvok', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Ta koda ima nadaljevanje kode in prazni vektorji dodajo vrednost, če pritisnete gumb.

Nato ustvarite funkcijo čakanja, da sprejmete odziv gumba in aktivirate kodo v gumbu, ko pritisnete: h = randi ([4, 7]); uiwait (gcbf, h); (naredili smo naključno spremenljivko h, tako da udeleženci niso mogli goljufati in določiti, koliko sekund je potrebno za odgovor.)

Po končani zanki ohranite frekvenčno izhodno spremenljivko (freq_right) v Hz, zato jo pustite pri miru. Nato spremenite spremenljivko dB_right iz ojačevalnikov v decibele z uporabo enačbe: dB_right = mag2db (amp_right)*(-1);

Nato dodajte funkcijo: zaprite vse. to bo izničilo vse nepotrebne številke, ki so se morda pojavile.

Dodajte funkcijo premora, približno 10 sekund, da se uporabniku da čas, da se prilagodi in pripravi na levo uho.

4. korak: Ustvarite isto kodo za levo uho

Ustvarite isto kodo za levo uho
Ustvarite isto kodo za levo uho

Ponovite kodo za desno uho, da naredite naslednji segment, ki preizkusi levo uho. Razlika je le v tem, iz katerega izhodnega kanala bo prihajal zvok. Če želite to narediti, obrnite vrstni red vrednosti matrike za spremenljivko Out. To bi moralo izgledati tako:

Out = [s; ničle (velikost (t))] ';

S tem iz desnega kanala ne bo prišel zvok, ampak levi kanal!

5. korak: Naredite sliko vzporedno za primerjavo podatkov

Za primerjavo podatkov naredite sliko vzporedno
Za primerjavo podatkov naredite sliko vzporedno
Za primerjavo podatkov naredite sliko vzporedno
Za primerjavo podatkov naredite sliko vzporedno

Zdaj naredite graf za prikaz podatkov! Dva grafikona vstavite v eno številko, zato to storite!

slika (1); podris (1, 2, 1); *** podplat (1, 2, 2) za drugega

Za vsako pod ploskev dodajte te popravke z določenimi barvami in koordinatami. Ti odseki grafikona so odvisni od tega, kako velika je stopnja izgube sluha. Takole:

obliž ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold on % Podnapis bo zdaj vseboval naslednje popravke in razpršene ploskve

besedilo (3173, 8, 'Običajno');

obliž ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % zelena

besedilo (3577, 33, 'Blago');

obliž ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % cijan

besedilo (2870, 48, 'Zmerno');

obliž ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % modra

besedilo (1739, 62, 'Zmerno hudo');

obliž ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % vijolična

besedilo (3142, 80, 'Hudo');

obliž ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % rdeča

besedilo (3200, 103, 'globoko')

Nato dodajte levo in desno razpršeno ploskev! Za vas lahko zagotovimo splošno državno povprečje! Tukaj:

Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-vrednost, levo uhoNat_dBL = [10 3 10 15 10 15]; % y-vrednost

Nat_FreqR = [250 500 1000 2000 4000 8000]; % desno uho

Nat_dBR = [10 5 10 15 10 15];

Razpršene ploskve morajo razlikovati levo in desno točko. Lahko bi naredili križe in kroge!

NL = razpršitev (Nat_FreqL, Nat_dBL, 'bx'); % nariše modre križne točkeNR = razpršenost (Nat_FreqR, Nat_dBR, 'ro'); % nariše rdeče kroge

Ustvarite legendo za nacionalni graf tako, da ga dodelite posebnim spremenljivkam: legend ([NL NR], {'title1', 'title2'});

Omejitev x nastavite od 250 do 8000 Hz in omejitev y od -10 do 120 dB. Ne pozabite spremeniti navpičnih kljukic z oznakami ()

Os x označite kot "Frekvenca Hz", os y pa "Nagib dB".

Obrnite os y tako, da os zberete ax = gca

Nato z njo povežite lastnost smeri y z: ax. YDir = 'reverse

Zdaj je koda za drugo približno enaka, vendar brez legende in grafičnega prikaza razpršil s spremenljivkami iz levega in desnega testa.

Po vsem tem dodajte funkcijo premora za približno 10 sekund, da si lahko uporabnik ogleda rezultate.

6. korak: Če želite, dodajte majhno zahvalo

Če želite, dodajte majhno zahvalo!
Če želite, dodajte majhno zahvalo!

To je samo za zabavo, če želite, a za zahvalo in slovo dodajte še en imread (), imshow () in uiwait (msgbox ())! Razen tega ne pozabite postaviti clf; zaprite vse; clc; da bi vse zaprl. Dobro opravljeno!

Priporočena: