Orodha ya maudhui:

Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB: Hatua 6
Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB: Hatua 6

Video: Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB: Hatua 6

Video: Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB: Hatua 6
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Novemba
Anonim
Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB
Jinsi ya Kufanya Mtihani wa Usikivu wa Watu Wazima Ukitumia MATLAB

KANUSHO: Jaribio letu SI uchunguzi wa kimatibabu na haipaswi kutumiwa kama hiyo. Ili kupima usahihi kusikia, tafadhali angalia mtaalamu wa matibabu.

Kutumia vifaa ambavyo tulikuwa tayari, kikundi chetu kilifanya jaribio la kusikia. Jaribio letu ni la matumizi ya watu wazima na vijana tu kwa sababu kusikia kwa watoto wadogo kunakuja katika anuwai anuwai na inapaswa kupimwa tu na mtaalamu.

Mradi huu ulitiwa msukumo wakati wa kufanya kazi katika darasa letu la BME MATLAB na kucheza na sauti zilizotolewa na mawimbi ya sine. Tulivutiwa na njia ambazo wimbi la sine linaweza kubadilishwa ili kucheza sauti kwenye viwanja tofauti.

Tunachohitaji tu kwa mradi huu ilikuwa kompyuta inayoendesha MATLAB R2018b na vipuli vya masikioni. Tulijumuisha mhusika wa asili, Frances, kama mascot ili kufanya programu iwe ya kuchekesha zaidi.

Hatua ya 1: Unda Ingizo la Mtumiaji kuchanganua Umri wa Mtumiaji

Unda Ingizo la Mtumiaji Kuchambua Umri wa Mtumiaji
Unda Ingizo la Mtumiaji Kuchambua Umri wa Mtumiaji
Unda Ingizo la Mtumiaji Kuchambua Umri wa Mtumiaji
Unda Ingizo la Mtumiaji Kuchambua Umri wa Mtumiaji

Sehemu ya kwanza ya nambari hii ni kufanya uingizaji wa mtumiaji ambao huamua ikiwa wana umri wa kutosha kuendelea kufanya jaribio la kusikia. Kwa nini usifanye kwa kuongeza picha za kijinga za mascot yetu, Frances? Ili kufanya hivyo, pakua faili ya zip ikiwa ni pamoja na kisha uiondoe kwenye faili ambayo inaweza kuvutwa hadi kwenye nambari. Endelea kupakia kundi faili iliyojaa michoro kwa kutumia hii:

Dir = 'C: / Watumiaji / phoeb / OneDrive / Nyaraka / MATLAB / Michoro ya Frances'; GetDir = 'C: / Watumiaji / phoeb / OneDrive / Nyaraka / MATLAB / Michoro ya Frances / *. Jpg';

Ili kuwasilisha visanduku vya ujumbe na picha kubwa za michoro, tulitumia njia hii ya kufurahisha ya kukuonyesha Frances. Soma tu picha ya chaguo lako na fomati: variable = imread ('nameofpicture.jpg');

Kisha endelea kuionyesha kwa kutumia imshow (variable); basi itajitokeza kama kielelezo kwenye MatLab yako unapoiendesha!

Ifuatayo ni masanduku ya ujumbe ambayo hutumiwa kwenye nambari yote. uiwait () ni kazi ambayo nambari imesimamishwa hadi fujo ambayo imechaguliwa kwa uiwait imalize. Kazi iliyochaguliwa ni msgbox ('message', 'title', 'icon')!

Unaweza kujisikia huru kubadilisha ujumbe Frances anasema ili mradi utafuata muundo wa msgbox () hapo juu. Ikiwa unataka kutumia picha za Frances, andika 'ikoni' kama 'desturi' na endelea na comma na utofautishaji wa imread ya picha uliyochagua! Unaweza pia kutumia aina zilizowekwa tayari za "icon" pia. inapaswa kuonekana kama hii:

hi = imread ('Mara kwa mara.jpg'); % inasoma picha kutoka kwa faili iliyopakiwa (hi); uiwait (msgbox ('Halo na asante kwa kuchagua jaribio letu la kusikia! Huyu ni Frances na atakusaidia leo na mtihani wako!', 'Karibu!', 'desturi', hi));

Halafu tengeneza pembejeo ambayo inauliza umri wa mtumiaji kama hivyo!

UserAge = input ('Kabla hatujaanza jaribio hili, una miaka mingapi? (K.m 32, 56,…) n', 's');

KUMBUKA: ikiwa takwimu zinashangaza na ziko nyingi mno, tumia karibu zote ili kuondoa takwimu za mapema kadiri nambari yako ya simu inavyofanya kazi

Kisha unda muundo wa kesi ya kubadili! Kumbuka kwamba pembejeo ya mtumiaji iko kwenye kamba na unahitaji kuibadilisha kuwa nambari ya nambari. Kwa hivyo tumia str2double (UserAge). Kila kesi inapaswa kuwa na anuwai ya miaka kama vile 4 hadi 6 au 18 hadi 40. kuwa na ubadilishaji ili kuthibitisha kuwa ni kweli kwa moja ya kesi tumia num2cell (safu) kama hivyo:

badilisha str2double (UserAge)% inabadilika kutofautisha kutoka kwa kamba kwenda kwenye nambari ya thamani ya nambari num2cell (0: 3)

frances = imread ('yai.jpg');

imshow (frances);

uiwait (msgbox ('Wewe ni kijusi! Frances anafikiria unapaswa kufanya mtihani wako wa kusikia na daktari badala yake!', 'Mtihani Umekataliwa!', 'desturi', frances));

kurudi

Vikundi vya mapema vinapaswa kurudishwa ili kuzuia mtumiaji kuendelea na nambari.

Kumbuka kumaliza muundo wa kesi na kufunga takwimu zote.

Hatua ya 2: Jaribu Sauti kwa Mtumiaji

Jaribu Sauti kwa Mtumiaji
Jaribu Sauti kwa Mtumiaji

Sehemu hii ipo ili kuhakikisha kuwa sauti ya mshiriki kwenye kifaa chao sio ya utulivu sana wala ya sauti kubwa.

Ili kumpa mtumiaji onyo sanduku la ujumbe linajitokeza na kusubiri uthibitisho kutoka kwa mtumiaji kabla ya kuendelea na sauti: uiwait (msgbox ('Kabla ya jaribio kuanza, tungependa kufanya mtihani wa sauti ili kuhakikisha sauti yako iko sawa! iko tayari? ',' Shikilia! ',' msaada '));

Wimbi la sine huchezwa na amplitude ya 1 na kiwango cha sampuli ya 1000 Hz: T = [0: 1 / SampleRate: 2]; y = 1 * dhambi (2 * pi * 200 * T); sauti (y, SampleRate);

Mtumiaji huulizwa swali na majibu yaliyoingizwa na mtumiaji: Q = pembejeo ('Je! Unaweza kusikia sauti? [Y / n] n', 's');

Halafu kuna utaftaji wa muda kwa wakati Q == 'n', ikiwa ni kweli basi sauti hurudia na kumuuliza mtumiaji tena hadi jibu litabadilika kutoka 'n' hadi 'y': wakati Q == 'n' ikiwa strcmp (Q, 'n') disp ('Geuza sauti ya kompyuta yako kwa sauti zaidi.'); subiri sauti; pause (2); Q = ingizo ('Je! Unaweza kusikia sauti sasa? [Y / n] n', 's'); mwisho mwisho

Kuna wakati wa kungojea kabla ya kubeba sehemu halisi ya uchunguzi wa nambari.

Hatua ya 3: Fanya Mtihani wa Audiometry kwa Sikio La kulia

Fanya Mtihani wa Audiometry kwa Sikio La kulia
Fanya Mtihani wa Audiometry kwa Sikio La kulia

Katika nambari hii, kitanzi kitaendesha mwendo 6 kwa masafa na ujazo kwa kila sikio la kibinafsi. Kulingana na sikio unayotaka kujaribu, ubadilishaji wa Kati utakuwa na sauti katika safu moja na sifuri kwa mwingine.

Kwanza unatengeneza vector mbili tupu za kurekodi masafa na ukubwa wa sauti ambayo mtumiaji husikia.

Sehemu hii iko kwenye kitanzi kilichopangwa kwa sauti hata kama unataka sauti nyingi ikiwa unataka kubadilisha masafa yaliyochezwa na ukubwa.

F ni masafa: r = (rand * 10000); Fs = 250 + r; (kazi ya rand ni kuunda masafa yaliyotengenezwa bila mpangilio) t ni kiasi fulani cha wakati ulioendelea kuamua na: t = nafasi ya nafasi (0, Fs * 2, Fs * 2); s ni wimbi la sine: s = dhambi (2 * pi * t * 1000); (hii inaweza kuzidishwa na ubadilishaji wa nasibu w kuunda kiwango cha nasibu / dB kwa kazi ya sauti: w = rand;)

Pato la sikio la kulia ni: Out = [zero (size (t)); s] ';

Matokeo yanachezwa kupitia nambari: sauti (Nje, Fs)

Hatua inayofuata ni kutengeneza kiolesura cha mtumiaji na kumbukumbu za nambari ikiwa mtumiaji amesikia sauti au la.

Kwanza fanya kielelezo na ujue nafasi ambayo takwimu itaonekana: gcbf = takwimu ('pos', [30 800 350 150]);

*** Ikiwa kitufe hakionekani kwako, nafasi ya takwimu, kama inavyoonyeshwa na safu hapo juu, inaweza kuwa imewekwa vibaya kwa kompyuta yako. Ili kutatua hili, badilisha maadili ya 30 na 800 kwa nafasi yoyote unayotaka. Kwa mfano, kuwa na [0 0 350 150] kutaangazia kitufe cha gui chini kushoto mwa mfuatiliaji. ***

Togglebutton inafanywa kurekodi wakati mtumiaji anasikia sauti, na msimamo na onyesho zinaweza kubadilishwa: tb = uicontrol ('Sinema', 'togglebutton', 'String', 'Bonyeza kitufe unaposikia sauti', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; karibu (gcbf); '); Nambari hii maalum ina nambari ya kuanza tena na veta tupu huongeza thamani ikiwa kitufe kinabanwa.

Kisha unda kazi ya kusubiri ili ula majibu ya kitufe na uamilishe nambari kwenye kitufe ukibonyeza: h = randi ([4, 7]); uiwait (gcbf, h); (tulifanya kutofautisha h kwa hivyo washiriki hawangeweza kudanganya na kuamua idadi ya sekunde muhimu kujibu.)

Baada ya kitanzi kumalizika, weka ubadilishaji wa pato la masafa (freq_right) katika Hz kwa hivyo achana nayo. Kisha ubadilishe ubadilishaji wa dB_right kutoka kwa amps hadi kwa decibel kwa kutumia equation: dB_right = mag2db (amp_right) * (- 1);

Kisha ongeza kazi: funga zote. hii itaondoka kwa takwimu zozote ambazo hazihitajiki ambazo zinaweza kuwa zimeibuka.

Ongeza kazi ya kusitisha, kama sekunde 10, ili kutoa wakati kwa mtumiaji kurekebisha na kujiandaa kwa sikio la kushoto.

Hatua ya 4: Unda Nambari Sawa ya Sikio la Kushoto

Unda Nambari Sawa ya Sikio la Kushoto
Unda Nambari Sawa ya Sikio la Kushoto

Rudia nambari iliyotumiwa kwa sikio la kulia kufanya sehemu inayofuata inayojaribu sikio la kushoto. Tofauti pekee inabadilisha sauti ambayo kituo kitatoka. Ili kufanya hivyo, tembeza mpangilio wa maadili ya safu ya Tofauti inayobadilika. Inapaswa kuonekana kama hii:

Nje = [s; zero (saizi (t))] ';

Kwa kufanya hivyo, hakuna sauti itatoka kwenye idhaa sahihi lakini kituo cha kushoto badala yake!

Hatua ya 5: Tengeneza Kielelezo Kando-na-Kando ili Kulinganisha Takwimu

Fanya Kielelezo Kando-na-Kando ili Kulinganisha Takwimu
Fanya Kielelezo Kando-na-Kando ili Kulinganisha Takwimu
Fanya Kielelezo Kando-na-Kando ili Kulinganisha Takwimu
Fanya Kielelezo Kando-na-Kando ili Kulinganisha Takwimu

Sasa fanya grafu kuonyesha data! Unaweka grafu mbili kwenye takwimu moja kwa hivyo fanya hivi!

takwimu (1); sehemu ndogo (1, 2, 1); Kiwanja kidogo (1, 2, 2) kwa hiyo nyingine

Kwa kila sehemu ndogo, ongeza kwenye viraka hivi na rangi maalum na kuratibu. Sehemu hizi mbali na grafu kulingana na kiwango kikubwa cha upotezaji wa kusikia ni nini. Kama hivyo:

kiraka ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % ya manjano% Sehemu ndogo sasa itashikilia viraka na viwambo vifuatavyo

maandishi (3173, 8, 'Kawaida');

kiraka ([250 8000 8000 250], [40 40 25 25], [0 0.75 0.25]); % kijani

maandishi (3577, 33, 'Mpole');

kiraka ([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % cyan

maandishi (2870, 48, 'Wastani');

kiraka ([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); bluu

maandishi (1739, 62, 'Kali Kiasi');

kiraka ([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % zambarau

maandishi (3142, 80, 'Kali');

kiraka ([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % nyekundu

maandishi (3200, 103, 'Profound')

Kisha ongeza viwanja vya kutawanya kushoto na kulia! Tunaweza kutoa wastani wa kitaifa kwako! Hapa:

Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-thamani, sikio la kushotoNat_dBL = [10 3 10 15 10 15]; % y -thamani

Nat_FreqR = [250 500 1000 2000 4000 8000]; % sikio la kulia

Nat_dBR = [10 5 10 15 10 15];

Viwanja vya kutawanya vinapaswa kutambua sehemu za kushoto na kulia. Unaweza kufanya misalaba na miduara!

NL = kutawanya (Nat_FreqL, Nat_dBL, 'bx'); Viwanja% alama za msalaba wa bluuNR = kutawanya (Nat_FreqR, Nat_dBR, 'ro'); Viwanja% nyekundu

Tengeneza hadithi kwa grafu ya kitaifa kwa kuipatia vigeuzi maalum: hadithi ([NL NR], {'title1', 'title2'});

Weka kikomo chako cha x kutoka 250 hadi 8000 Hz na kikomo chako kutoka -10 hadi 120 dB. Kumbuka kubadilisha kupe zako wima na vijiti ()

Andika mhimili wako x "Frequency Hz" na mhimili wako "Pitch dB".

Rejesha mhimili y kwa kukusanya mhimili na shoka = gca

Kisha funga mali ya mwelekeo y na ax. YDir = 'reverse

Sasa nambari ya pili ni sawa lakini bila hadithi na kuchora vijiko na vigeuzi kutoka kwa majaribio ya kushoto na kulia.

Baada ya haya yote, ongeza kazi ya kusitisha kwa sekunde 10 ili mtumiaji aangalie matokeo yake.

Hatua ya 6: Ongeza Ujumbe Asante kidogo Ikiwa Ungependa

Ongeza Ujumbe Asante kidogo Ikiwa Ungependa!
Ongeza Ujumbe Asante kidogo Ikiwa Ungependa!

Hii ni ya kujifurahisha tu ikiwa ungependa lakini ongeza imread nyingine (), imshow () na uiwait (msgbox ()) kwa asante na kuaga! Nyingine zaidi ya hayo, kumbuka kuweka clf; funga zote; clc; ili kufunga kila kitu. Kazi nzuri umeifanya!

Ilipendekeza: