Satura rādītājs:

Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB: 6 soļi
Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB: 6 soļi

Video: Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB: 6 soļi

Video: Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB: 6 soļi
Video: Как избавиться от страха. 5 практических советов как побороть страх. НЛП техники 2024, Decembris
Anonim
Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB
Kā veikt pieaugušo dzirdes pārbaudi, izmantojot MATLAB

ATRUNA: Mūsu tests NAV medicīniska diagnostika, un to nevajadzētu izmantot kā tādu. Lai precīzi izmērītu dzirdi, lūdzu, apmeklējiet medicīnas speciālistu.

Izmantojot materiālus, kas mums jau bija, mūsu grupa veica dzirdes pārbaudi. Mūsu tests ir paredzēts lietošanai pieaugušajiem un pusaudžiem tikai tāpēc, ka mazu bērnu dzirde ir dažādos diapazonos, un to vajadzētu izmērīt tikai profesionālim.

Šis projekts tika iedvesmots, strādājot mūsu BME MATLAB klasē un spēlējoties ar sinusa viļņu radītajām skaņām. Mūs interesēja veidi, kā sinusa vilni var mainīt, lai atskaņotu skaņu dažādos laukumos.

Šim projektam mums vajadzēja tikai datoru, kurā darbojas MATLAB R2018b, un pāris austiņas. Mēs kā talismanu iekļāvām oriģinālu personāžu Frensisu, lai programma būtu humoristiskāka.

1. darbība: izveidojiet lietotāja ievadi, lai analizētu lietotāja vecumu

Izveidojiet lietotāja ievadi, lai analizētu lietotāja vecumu
Izveidojiet lietotāja ievadi, lai analizētu lietotāja vecumu
Izveidojiet lietotāja ievadi, lai analizētu lietotāja vecumu
Izveidojiet lietotāja ievadi, lai analizētu lietotāja vecumu

Šī koda pirmā daļa ir lietotāja ievadīšana, kurā tiek izlemts, vai viņš ir pietiekami vecs, lai veiktu dzirdes pārbaudi. Kāpēc gan to nedarīt, pievienojot arī muļķīgas mūsu talismana Frensisa bildes? Lai to izdarītu, lejupielādējiet iekļauto zip failu un pēc tam izvelciet to failā, ko var ievilkt kodā. Turpiniet augšupielādēt zīmējumu pilnu failu, izmantojot šo:

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

Lai parādītu ziņojumu lodziņus un lielus zīmējumu attēlus, mēs izmantojām šo jautro Francesa parādīšanas metodi. Vienkārši imread attēlu pēc jūsu izvēles ar formātu: variable = imread ('nameofpicture.jpg');

Pēc tam turpiniet to parādīt, izmantojot imshow (mainīgais); tad tas tiks parādīts kā skaitlis jūsu MatLab, kad to palaidīsit!

Tālāk ir ziņojumu lodziņi, kas tiek izmantoti visā kodā. uiwait () ir funkcija, kurā kods tiek apturēts, līdz tiek pabeigta uiwait izvēlētā darbība. Šī izvēlētā funkcija ir msgbox ('ziņojums', 'nosaukums', 'ikona')!

Jūs varat brīvi mainīt Frances teiktos ziņojumus, ja vien sekojat iepriekš norādītajam msgbox () formātam. Ja vēlaties izmantot Frančes attēlus, atzīmējiet “ikonu” kā “pielāgotu” un turpiniet to ar komatu un izvēlētā attēla imread mainīgo! Varat arī izmantot iepriekš iestatītos ikonu veidus. tam vajadzētu izskatīties šādi:

hi = imread ('Regular.jpg'); % nolasa attēlu no augšupielādētā faila šova (hi); uiwait (msgbox ('Labdien un paldies, ka izvēlējāties mūsu dzirdes pārbaudi! Šis ir Frensiss, un viņš šodien jums palīdzēs ar jūsu testu!', 'Laipni lūdzam!', 'pielāgots', čau));

Pēc tam izveidojiet ievadi, kurā tiek jautāts lietotāja vecums!

UserAge = input ('Pirms mēs sākam šo pārbaudi, cik vecs (gadi) jums ir? (Piemēram, 32, 56,…) n', 's');

PIEZĪME: ja skaitļi ir dīvaini un to ir pārāk daudz, izmantojiet aizvērt visus, lai koda izpildes laikā noņemtu iepriekšējos skaitļus

Tad izveidojiet slēdža korpusa struktūru! Atcerieties, ka lietotāja ievade ir virkne, un tā ir jāpārvērš skaitliskā vērtībā. Tāpēc izmantojiet str2double (UserAge). Katram gadījumam ir jābūt vecuma diapazonam, piemēram, no 4 līdz 6 vai no 18 līdz 40. Lai mainīgais būtu pārbaudāms kā patiess vienā no gadījumiem, izmantojiet num2cell (masīvu) šādi:

slēdzis str2double (UserAge) % maina mainīgo no virknes uz skaitlisku vērtību gadījums num2cell (0: 3)

frances = imread ('Ola.jpg');

imshow (frances);

uiwait (msgbox ('Tu esi auglis! Frensisa domā, ka tev vajadzētu veikt dzirdes pārbaudi pie ārsta!', 'Tests noraidīts!', 'pielāgots', francūzija));

atgriezties

Iepriekšējās grupas ir jāatgriež, lai lietotājs nevarētu turpināt izmantot kodu.

Neaizmirstiet pabeigt lietas struktūru un aizvērt visus skaitļus.

2. darbība: pārbaudiet lietotāja audio

Pārbaudiet audio lietotājam
Pārbaudiet audio lietotājam

Šis segments pastāv, lai nodrošinātu, ka dalībnieka skaņa savā ierīcē nav ne pārāk klusa, ne pārāk skaļa.

Lai brīdinātu lietotāju, tiek parādīts ziņojumu lodziņš un gaidīts apstiprinājums no lietotāja, pirms turpināt skaņu: uiwait (msgbox ('Pirms testa sākuma mēs vēlētos veikt audio pārbaudi, lai pārliecinātos par jūsu skaļumu ir pareizi! Gatavs? ',' Turies! ',' palīdz '));

Tiek atskaņots sinusa vilnis ar amplitūdu 1 un izlases frekvenci 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*grēks (2*pi*200*T); skaņa (y, SampleRate);

Pēc tam lietotājam tiek uzdots jautājums ar lietotāja ievadītu atbildi: Q = ievade ('Vai dzirdat skaņu? [Y/n] n', 's');

Tad kādu laiku meklējiet, kad Q == 'n', ja tā ir patiesa, skaņa atkārtojas un jautāja lietotājam vēlreiz, līdz atbilde ir mainījusies no 'n' uz 'y': kamēr Q == 'n', ja strcmp (Q, 'n') disp ('Pagrieziet datora skaļumu skaļāk.'); gaidīt_skaņa; pauze (2); Q = ievade ('Vai tagad dzirdat skaņu? [Y/n] n', 's'); beigas beigas

Pēc tam ir jāgaida, pirms pāriet uz koda faktisko pārbaudes daļu.

3. solis: veiciet labās auss audiometrijas pārbaudi

Veiciet Audiometrijas pārbaudi labajai ausij
Veiciet Audiometrijas pārbaudi labajai ausij

Šajā kodā cilpa darbosies 6 atkārtojumos ar dažādu frekvenci un skaļumu katrai atsevišķai ausij. Atkarībā no auss, kuru vēlaties pārbaudīt, mainīgajam Out būs skaņa vienā rindā un nulle citā.

Vispirms izveidojiet divus tukšus rindu vektorus, lai ierakstītu lietotāja dzirdamās skaņas frekvences un amplitūdu.

Šī daļa ir indeksēta ciklam, lai cik skaņu vēlaties atskaņot, ja vēlaties nejauši atlasīt atskaņotās frekvences un amplitūdu.

F ir biežums: r = (rand*10000); Fs = 250 + r; (rand funkcija ir izveidot nejauši ģenerētu frekvenci) t ir noteikts laika posms, ko nosaka: t = linspace (0, Fs*2, Fs*2); s ir sinusa vilnis: s = sin (2*pi*t*1000); (to var reizināt ar nejaušo mainīgo w, lai skaņas funkcijai izveidotu nejaušu amplitūdas/dB vērtību: w = rand;)

Labās auss izvade ir: Out = [nulles (izmērs (t))); s] ';

Izejas tiek atskaņotas, izmantojot kodu: skaņa (Out, Fs)

Nākamais solis ir izveidot lietotāja saskarni ar koda ierakstiem, vai lietotājs dzirdēja skaņu vai nē.

Vispirms izveidojiet skaitli un nosakiet pozīciju, kurā figūra parādīsies: gcbf = skaitlis ('pos', [30 800 350 150]);

*** Ja poga jums neparādās, skaitļa pozīcija, kā parādīts iepriekš redzamajā masīvā, jūsu datoram var būt novietota nepareizi. Lai to atrisinātu, mainiet 30 un 800 vērtības uz vēlamo pozīciju. Piemēram, ja ir [0 0 350 150], tiks parādīta poga gui monitora apakšējā kreisajā stūrī. ***

Tiek veikta pārslēgšanas poga, lai ierakstītu, kad lietotājs dzird skaņu, un pozīciju un displeju var pielāgot: tb = uicontrol ('Stils', 'pārslēgšanas poga', 'Stīga', 'Nospiediet pogu, kad dzirdat skaņu', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Šim konkrētajam kodam ir koda atsākšana, un, nospiežot pogu, tukšie vektori pievieno vērtību.

Pēc tam izveidojiet gaidīšanas funkciju, lai uzņemtu pogas reakciju, un, nospiežot pogu, aktivizējiet kodu: h = randi ([4, 7]); uiwait (gcbf, h); (mēs izdarījām nejaušo mainīgo h, lai dalībnieki nevarētu krāpties un noteiktu, cik sekundes vajadzīgas, lai atbildētu.)

Kad cikls ir pabeigts, saglabājiet frekvences izejas mainīgo (freq_right) Hz, tāpēc atstājiet to mierā. Pēc tam pārveidojiet mainīgo dB_right no ampēriem uz decibeliem, izmantojot vienādojumu: dB_right = mag2db (amp_right)*(-1);

Pēc tam pievienojiet funkciju: aizveriet visu. tas izzudīs no nevajadzīgiem skaitļiem, kas varētu būt parādījušies.

Pievienojiet aptuveni 10 sekunžu pauzes funkciju, lai dotu laiku lietotājam pielāgoties un sagatavoties kreisajai ausij.

4. darbība: izveidojiet to pašu kodu kreisajai ausij

Izveidojiet to pašu kodu kreisajai ausij
Izveidojiet to pašu kodu kreisajai ausij

Atkārtojiet labo auss kodu, lai izveidotu nākamo segmentu, kas pārbauda kreiso ausi. Vienīgā atšķirība ir mainīt to, no kura izejas kanāla tiks atskaņota skaņa. Lai to izdarītu, mainiet mainīgā Out masīva vērtību secību. Tam vajadzētu izskatīties šādi:

Ārā = [s; nulles (izmērs (t))]”;

To darot, skaņa nenāks no labā kanāla, bet no kreisā kanāla!

5. darbība: izveidojiet blakus attēlu, lai salīdzinātu datus

Lai salīdzinātu datus, izveidojiet blakus attēlu
Lai salīdzinātu datus, izveidojiet blakus attēlu
Lai salīdzinātu datus, izveidojiet blakus attēlu
Lai salīdzinātu datus, izveidojiet blakus attēlu

Tagad izveidojiet diagrammu, lai parādītu datus! Jūs ievietojat divus grafikus vienā attēlā, tāpēc dariet to!

attēls (1); apakšplāksne (1, 2, 1); *** apakšplāksne (1, 2, 2) otram

Katram apakšplānam pievienojiet šos ielāpus ar noteiktām krāsām un koordinātām. Šīs sadaļas no grafika ir atkarīgas no tā, cik liela ir dzirdes zuduma pakāpe. Tāpat kā:

plāksteris ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold on % Apakšplānā tagad būs šādi ielāpi un izkliedes attēli

teksts (3173, 8, 'Normāls');

plāksteris ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % zaļš

teksts (3577, 33, 'Viegla');

plāksteris ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % Ciāna

teksts (2870, 48, 'Mērens');

plāksteris ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % zils

teksts (1739, 62, 'Vidēji smags');

plāksteris ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % violets

teksts (3142, 80, 'Smags');

plāksteris ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % sarkans

teksts (3200, 103, 'Pamatīgs')

Tad pievienojiet kreiso un labo izkliedes gabalu! Mēs varam jums nodrošināt vispārēju vidējo rādītāju valstī! Šeit:

Nat_FreqL = [250 500 1000 2000 4000 8000]; % x vērtība, kreisā aussNat_dBL = [10 3 10 15 10 15]; % y vērtība

Nat_FreqR = [250 500 1000 2000 4000 8000]; % labā auss

Nat_dBR = [10 5 10 15 10 15];

Izkliedes grafikiem vajadzētu atšķirt kreiso un labo punktu. Jūs varētu darīt krustus un apļus!

NL = izkliede (Nat_FreqL, Nat_dBL, 'bx'); % attēlo zilos krustpunktusNR = izkliede (Nat_FreqR, Nat_dBR, 'ro'); % uzzīmē sarkanos apļus

Izveidojiet leģendu nacionālajam grafikam, piešķirot to konkrētiem mainīgajiem: leģenda ([NL NR], {'title1', 'title2'});

Iestatiet savu x ierobežojumu no 250 līdz 8000 Hz un y ierobežojumu no -10 līdz 120 dB. Neaizmirstiet mainīt vertikālās ērces, izmantojot yticks ()

Iezīmējiet savu x asi “Frequency Hz” un y asi “Pitch dB”.

Apgrieziet y asi, savācot asi ar ax = gca

Pēc tam piesaistiet tam y virziena īpašību ar: ax. YDir = 'reverse

Tagad otrā kods ir aptuveni vienāds, bet bez leģendas un izkliedes diagrammu attēlošanā ar mainīgajiem no kreisās un labās puses testiem.

Pēc tam pievienojiet pauzes funkciju apmēram 10 sekundes, lai lietotājs varētu apskatīt savus rezultātus.

6. darbība. Ja vēlaties, pievienojiet nelielu pateicības ziņojumu

Ja vēlaties, pievienojiet nelielu paldies!
Ja vēlaties, pievienojiet nelielu paldies!

Tas ir tikai izklaidei, ja vēlaties, bet, lai pateiktos un atvadītos, pievienojiet vēl vienu imread (), imshow () un uiwait (msgbox ())! Izņemot to, atcerieties ielikt clf; aizvērt visu; clc; lai visu aizvērtu. Labs darbs, ka tu to izdarīji!

Ieteicams: