Përmbajtje:

Si të bëni një test dëgjimi për të rriturit duke përdorur MATLAB: 6 hapa
Si të bëni një test dëgjimi për të rriturit duke përdorur MATLAB: 6 hapa

Video: Si të bëni një test dëgjimi për të rriturit duke përdorur MATLAB: 6 hapa

Video: Si të bëni një test dëgjimi për të rriturit duke përdorur MATLAB: 6 hapa
Video: RTX 3090 Ti vs RTX 3060 Ultimate Showdown for Stable Diffusion, ML, AI & Video Rendering Performance 2024, Korrik
Anonim
Si të bëni një test të dëgjimit për të rriturit duke përdorur MATLAB
Si të bëni një test të dëgjimit për të rriturit duke përdorur MATLAB

Mohimi: Testi ynë NUK është diagnostikues mjekësor dhe nuk duhet të përdoret si i tillë. Për të matur me saktësi dëgjimin, ju lutemi shihni një profesionist mjekësor.

Duke përdorur materialet që kishim tashmë, grupi ynë bëri një test dëgjimi. Testi ynë është për përdorim nga të rriturit dhe adoleshentët sepse dëgjimi i fëmijëve të vegjël vjen në nivele të ndryshme dhe duhet të matet vetëm nga një profesionist.

Ky projekt u frymëzua gjatë punës në klasën tonë BME MATLAB dhe duke luajtur me tingujt e bërë nga valët sinusale. Ne ishim të interesuar në mënyrat se si një valë sinus mund të ndryshohet për të luajtur një tingull në fusha të ndryshme.

E tëra që na duhej për këtë projekt ishte një kompjuter me MATLAB R2018b dhe një palë kufje. Ne kemi përfshirë një personazh origjinal, Frances, si një nuskë për ta bërë programin më me humor.

Hapi 1: Krijoni një hyrje të përdoruesit për të analizuar moshën e përdoruesit

Krijoni një hyrje të përdoruesit për të analizuar moshën e përdoruesit
Krijoni një hyrje të përdoruesit për të analizuar moshën e përdoruesit
Krijoni një hyrje të përdoruesit për të analizuar moshën e përdoruesit
Krijoni një hyrje të përdoruesit për të analizuar moshën e përdoruesit

Pjesa e parë e këtij kodi është krijimi i një inputi të përdoruesit në të cilin vendoset nëse ata janë mjaft të rritur për të vazhduar për të bërë testin e dëgjimit. Pse të mos e bëjmë duke shtuar edhe fotografi pa kuptim të maskotës sonë, Frances? Për ta bërë këtë, shkarkoni skedarin zip të përfshirë dhe më pas nxirreni në një skedar që mund të tërhiqet në kod. Vazhdoni të ngarkoni me grumbull skedarin plot vizatime duke përdorur këtë:

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

Për të paraqitur kutitë e mesazheve dhe imazhe të mëdha të vizatimeve, ne përdorëm këtë metodë argëtuese për t'ju treguar Frances. Thjesht lexoni një imazh të zgjedhur nga ju me formatin: variable = imread ('nameofpicture.jpg');

Pastaj vazhdoni ta shfaqni duke përdorur imshow (variabël); atëherë do të shfaqet si një figurë në MatLab tuaj kur ta përdorni!

Tjetra janë kutitë e mesazheve të cilat përdoren në të gjithë kodin. uiwait () është një funksion në të cilin kodi ndalet derisa të përfundojë funksionimi i zgjedhur për uiwait. Ky funksion i zgjedhur është msgbox ('mesazh', 'titull', 'ikonë')!

Mund të ndiheni të lirë të ndryshoni mesazhet që thotë Frances për sa kohë që ndiqni formatin e mesazhit () më sipër. Nëse dëshironi të përdorni fotografitë e Frances, etiketoni 'ikonën' si 'zakon' dhe vazhdoni atë me presje dhe ndryshoren e imread -it të figurës që keni zgjedhur! Ju gjithashtu mund të përdorni llojet e paracaktuara të "ikonave" gjithashtu. duhet të duket kështu:

hi = imread ('Regular.jpg'); % lexon imazhin nga skedari i ngarkuar shfaqje (hi); uiwait (msgbox ('Përshëndetje dhe faleminderit që zgjodhët testin tonë të dëgjimit! Kjo është Frances dhe ai do t'ju ndihmojë sot me testin tuaj!', 'Mirë se vini!', 'personal', përshëndetje));

Tjetra krijoni një hyrje që pyet moshën e përdoruesit ashtu!

UserAge = input ('Para se të fillojmë këtë test, sa vjeç (vjeç) jeni? (P.sh. 32, 56,…) n', 's');

SHENIM: nëse shifrat janë të çuditshme dhe ka shumë, përdorni mbyllni të gjitha për të hequr figurat e mëparshme ndërsa kodi juaj funksionon

Pastaj krijoni një strukturë të rastit ndërrues! Mos harroni se hyrja e përdoruesit është në varg dhe ju duhet ta konvertoni atë në një vlerë numerike. Pra përdorni str2double (UserAge). Çdo rast duhet të ketë një varg moshash si 4 deri në 6 ose 18 deri në 40. për të pasur variablin për të verifikuar si të vërtetë për një nga rastet përdorni num2cell (grup) si më poshtë:

switch str2double (UserAge) % ndryshon variablin nga një varg në një vlerë numerike rast num2cell (0: 3)

frances = imread ('Veza.jpg');

imshow (frances);

uiwait (msgbox ("Ju jeni një fetus! Frances mendon se ju duhet të bëni testin tuaj të dëgjimit me një mjek në vend!", "Testi u mohua!", "zakon", frances));

kthim

Grupet e mëparshme duhet të kthehen në mënyrë që të parandalojnë përdoruesin të vazhdojë me kodin.

Mos harroni të përfundoni strukturën e rastit dhe të mbyllni të gjitha shifrat.

Hapi 2: Testoni audion për përdoruesin

Testoni audion për përdoruesit
Testoni audion për përdoruesit

Ky segment ekziston për të siguruar që tingulli i pjesëmarrësit në pajisjen e tyre nuk është as shumë i qetë dhe as shumë i lartë.

Për t'i dhënë përdoruesit një paralajmërim, një kuti mesazhi shfaqet dhe pret konfirmimin nga përdoruesi para se të vazhdojë me zërin: uiwait (msgbox ('Para fillimit të testit, ne do të donim të bënim një test audio për t'u siguruar që vëllimi juaj ka të drejtë! Gati? ',' Qëndroni! ',' ndihmë '));

Një valë sinusale luhet me një amplitudë 1 dhe shkallën e mostrës prej 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*mëkat (2*pi*200*T); tingull (y, SampleRate);

Përdoruesit i bëhet një pyetje me një përgjigje të futur nga përdoruesi: Q = input ('A mund ta dëgjoni zërin? [Y/n] n', 's');

Pastaj ka një kërkim për një kohë kur Q == 'n', nëse është e vërtetë atëherë tingulli përsëritet dhe e pyet përsëri përdoruesin derisa përgjigja të ndryshojë nga 'n' në 'y': ndërsa Q == 'n' nëse strcmp (Q, 'n') disp ('Kthejeni volumin e kompjuterit tuaj me zë të lartë.'); pritet_tingulli; pauzë (2); Q = hyrje ('A mund ta dëgjoni zërin tani? [Y/n] n', 's'); fund fund

Pastaj ka një moment pritjeje para se të kaloni në pjesën aktuale të ekzaminimit të kodit.

Hapi 3: Bëni Testin e Audiometrisë për Veshin e Djathtë

Bëni Testin e Audiometrisë për veshin e djathtë
Bëni Testin e Audiometrisë për veshin e djathtë

Në këtë kod, një lak do të funksionojë për 6 përsëritje me frekuenca dhe vëllime të ndryshme për secilin vesh individual. Në varësi të veshit që dëshironi të provoni, ndryshorja Out do të ketë tingull në një rresht dhe zero në një tjetër.

Së pari ju bëni dy vektorë të zbrazët të linjës për të regjistruar frekuencat dhe amplituda e zërit që përdoruesi dëgjon.

Kjo pjesë është në një lak të indeksuar për sa më shumë tinguj që dëshironi të luani nëse dëshironi të rastësoni frekuencat e luajtura dhe amplituda.

F është frekuenca: r = (rand*10000); Fs = 250 + r; (funksioni rand është të krijojë një frekuencë të krijuar rastësisht) t është një sasi e caktuar kohe e përparuar e përcaktuar nga: t = hapësira e brendshme (0, Fs*2, Fs*2); s është vala sinus: s = mëkati (2*pi*t*1000); (kjo mund të shumëzohet me ndryshoren e rastësishme w për të krijuar një vlerë të amplitudës/dB të rastësishme për funksionin e zërit: w = rand;)

Dalja për veshin e djathtë është: Out = [zero (madhësia (t)); s] ';

Daljet luhen përmes kodit: zë (Jashtë, Fs)

Hapi tjetër është të krijoni një ndërfaqe të përdoruesit me regjistrimet e kodit nëse përdoruesi e ka dëgjuar zërin apo jo.

Së pari ju bëni një figurë dhe përcaktoni pozicionin në të cilin do të shfaqet figura: gcbf = figura ('pos', [30 800 350 150]);

*** Nëse butoni nuk shfaqet për ju, pozicioni i figurës, siç tregohet nga grupi i mësipërm, mund të pozicionohet gabim për kompjuterin tuaj. Për ta zgjidhur këtë, ndryshoni vlerat 30 dhe 800 në cilindo pozicion që dëshironi. Për shembull, të kesh [0 0 350 150] do të krijojë butonin gui në pjesën e poshtme të majtë të monitorit. ***

Një buton çelës është bërë për të regjistruar kur përdoruesi dëgjon zërin, dhe pozicioni dhe ekrani mund të personalizohen: tb = uicontrol ('Stili', 'togglebutton', 'String', 'Shtyp butonin kur dëgjon një tingull', ' etiketë ',' togglebutton1 ',' Pozicioni ', [30 60 300 40],' Kthimi i përgjigjes ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; mbyll (gcbf); '); Ky kod i veçantë ka rinisjen e kodit dhe vektorët bosh shtojnë një vlerë nëse shtypet butoni.

Pastaj krijoni një funksion pritjeje për të marrë përgjigjen e butonit dhe aktivizoni kodin në buton kur shtypet: h = randi ([4, 7]); uiwait (gcbf, h); (ne bëmë ndryshoren e rastësishme h kështu që pjesëmarrësit nuk mund të mashtrojnë dhe të përcaktojnë numrin e sekondave të nevojshëm për t'u përgjigjur.)

Pasi të përfundojë lak, mbani ndryshoren e daljes së frekuencës (freq_right) në Hz, kështu që lini vetëm. Pastaj konvertoni ndryshoren dB_right nga amper në decibel duke përdorur ekuacionin: dB_right = mag2db (amp_right)*(-1);

Pastaj shtoni funksionin: mbyllni të gjithë. kjo do të dalë nga çdo shifër e panevojshme që mund të ketë dalë.

Shtoni një funksion pauzë, rreth 10 sekonda, në mënyrë që t'i jepni kohë përdoruesit të përshtatet dhe të përgatitet për veshin e majtë.

Hapi 4: Krijoni të njëjtin kod për veshin e majtë

Krijoni të njëjtin kod për veshin e majtë
Krijoni të njëjtin kod për veshin e majtë

Përsëriteni kodin e përdorur për veshin e djathtë për të bërë segmentin tjetër që teston veshin e majtë. Dallimi i vetëm është ndryshimi nga cili kanal dalës do të vijë tingulli. Për ta bërë këtë, rrokullisni rendin e vlerave të grupit për ndryshoren Out. Duhet të duket kështu:

Jashtë = [s; zero (madhësia (t))] ';

Duke vepruar kështu, asnjë zë nuk do të dalë nga kanali i djathtë, por kanali i majtë në vend!

Hapi 5: Bëni një figurë krah për krah për të krahasuar të dhënat

Bëni një figurë krah për krah për të krahasuar të dhënat
Bëni një figurë krah për krah për të krahasuar të dhënat
Bëni një figurë krah për krah për të krahasuar të dhënat
Bëni një figurë krah për krah për të krahasuar të dhënat

Tani bëni një grafik për të treguar të dhënat! Po vendosni dy grafikë në një figurë të vetme, prandaj bëjeni këtë!

figura (1); nënplot (1, 2, 1); *** nënplot (1, 2, 2) për tjetrën

Për secilën nënplot, shtoni këto arna me ngjyra dhe koordinata të veçanta. Këto i ndajnë grafikët në varësi të shkallës së madhe të humbjes së dëgjimit. Ashtu si:

arna ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % Nënploti tani do të mbajë arna dhe shpërndarje të mëposhtme

tekst (3173, 8, 'Normal');

arna ([250 8000 8000 250], [40 40 25 25], [0 0.75 0.25]); % e gjelbër

tekst (3577, 33, 'I butë');

arna ([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % cian

tekst (2870, 48, 'Mesatar');

arna ([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); % blu

tekst (1739, 62, 'Mesatarisht i Rëndë');

arna ([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % vjollce

tekst (3142, 80, 'E rëndë');

arna ([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % e kuqe

tekst (3200, 103, 'Thellë')

Pastaj shtoni komplotet e shpërndarjes majtas dhe djathtas! Ne mund të sigurojmë një mesatare të përgjithshme kombëtare për ju! Ketu:

Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-vlerë, veshi i majtëNat_dBL = [10 3 10 15 10 15 15]; % y-vlerë

Nat_FreqR = [250 500 1000 2000 4000 8000]; % veshi i djathtë

Nat_dBR = [10 5 10 15 10 15 15];

Komplotet e shpërndarjes duhet të dallojnë pikat e majta dhe të djathta. Ju mund të bëni kryqe dhe qarqe!

NL = shpërndaj (Nat_FreqL, Nat_dBL, 'bx'); % komplote pika blu kryqNR = shpërndarje (Nat_FreqR, Nat_dBR, 'ro'); % vizaton qarqe të kuqe

Krijoni një legjendë për grafikun kombëtar duke e caktuar atë në variabla të veçantë: legjendë ([NL NR], {'title1', 'title2'});

Vendosni kufirin tuaj x nga 250 në 8000 Hz dhe kufirin tuaj y nga -10 në 120 dB. Mos harroni të ndryshoni rriqrat tuaja vertikale me yticks ()

Etiketoni boshtin tuaj x "Frekuenca Hz" dhe boshti juaj y "Katran dB".

Kthejeni boshtin y duke mbledhur boshtin me ax = gca

Pastaj lidheni vetinë e drejtimit y me të me: ax. YDir = 'anasjelltas

Tani kodi për të dytin është pothuajse i njëjtë, por pa legjendën dhe grafikimin e pikave të shpërndara me ndryshoret nga testet e majta dhe të djathta.

Pas gjithë kësaj, shtoni një funksion pauzë për rreth 10 sekonda në mënyrë që përdoruesi të shikojë rezultatet e tyre.

Hapi 6: Shtoni një mesazh të vogël faleminderit nëse dëshironi

Shtoni një mesazh të vogël falënderimi nëse dëshironi!
Shtoni një mesazh të vogël falënderimi nëse dëshironi!

Kjo është vetëm për argëtim nëse dëshironi, por shtoni një imread tjetër (), imshow () dhe uiwait (msgbox ()) për një falënderim dhe lamtumirë! Për më tepër, mos harroni të vendosni clf; mbyll të gjitha; clc; për të mbyllur gjithçka. Punë e mirë që e bëre!

Recommended: