Innholdsfortegnelse:
- Trinn 1: Opprett en brukerinput for å analysere brukerens alder
- Trinn 2: Test lyden for brukeren
- Trinn 3: Gjør audiometri -testen for høyre øre
- Trinn 4: Lag samme kode for venstre øre
- Trinn 5: Lag en side ved side-figur for å sammenligne dataene
- Trinn 6: Legg til en liten takkemelding hvis du vil
Video: Hvordan lage en hørselstest for voksne ved hjelp av MATLAB: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
ANSVARSFRASKRIVELSE: Testen vår er IKKE en medisinsk diagnostikk og bør ikke brukes som sådan. Kontakt en lege for å måle hørsel nøyaktig.
Ved å bruke materialer vi allerede hadde, foretok gruppen vår en hørselstest. Vår test er kun til bruk for voksne og tenåringer fordi små barns hørsel kommer i forskjellige områder og bare måles av en profesjonell.
Dette prosjektet ble inspirert mens vi jobbet i BME MATLAB -klassen og lekte med lyder fra sinusbølger. Vi var interessert i hvordan en sinusbølge kan endres for å spille en lyd på forskjellige tonehøyder.
Alt vi trengte for dette prosjektet var en datamaskin som kjører MATLAB R2018b og et par ørepropper. Vi inkluderte en original karakter, Frances, som en maskot for å gjøre programmet mer humoristisk.
Trinn 1: Opprett en brukerinput for å analysere brukerens alder
Den første delen til denne koden er å legge inn en brukerinngang som avgjør om de er gamle nok til å fortsette å gjøre hørselstesten. Hvorfor ikke gjøre det ved også å legge til dumme bilder av maskoten vår, Frances? For å gjøre dette, last ned zip -filen som er inkludert og pakk den ut til en fil som kan trekkes opp i koden. Fortsett med batchopplasting av filen full av tegninger ved å bruke dette:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
For å presentere meldingsboksene og store bilder av tegningene brukte vi denne morsomme metoden for å vise Frances for deg. Bare les inn et bilde du ønsker med formatet: variable = imread ('nameofpicture.jpg');
Fortsett deretter med å vise det ved å bruke imshow (variabel); den vil da vises som en figur i MatLab når du kjører den!
Deretter er meldingsboksene som brukes i hele koden. uiwait () er en funksjon der koden stoppes til funksjonen som er valgt for uiwait er ferdig. Denne valgte funksjonen er msgbox ('melding', 'tittel', 'ikon')!
Du kan gjerne endre meldingene Frances sier så lenge du følger msgbox () -formatet ovenfor. Hvis du vil bruke Frances -bilder, merker du 'ikon' som 'egendefinert' og fortsetter med komma og variabelen for bildet av bildet du valgte! Du kan også bruke de forhåndsinnstilte ikonikonene. det skal se slik ut:
hei = imread ('Regular.jpg'); % leser bildet fra filen uploadedimshow (hei); uiwait (msgbox ('Hei og takk for at du valgte vår hørselstest! Dette er Frances, og han hjelper deg i dag med testen din!', 'Velkommen!', 'tilpasset', hei));
Lag deretter et input som spør brukerens alder slik!
UserAge = input ('Før vi starter denne testen, hvor gammel (år) er du? (F.eks. 32, 56, …) n', 's');
MERK: hvis tallene er rare og det er for mange, bruker du Lukk alle for å fjerne de tidligere tallene mens koden din kjører
Lag deretter en switch case -struktur! Husk at brukerinngangen er i streng, og du må konvertere den til en numerisk verdi. Så bruk str2double (UserAge). Hvert tilfelle bør ha en rekke aldre som 4 til 6 eller 18 til 40. for å ha variabelen for å verifisere som sann for en av tilfellene, bruk num2cell (array) slik:
bytt str2double (UserAge) % endrer variabel fra en streng til en numerisk verdi case num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Du er et foster! Frances synes du bør gjøre hørselstesten din med en lege i stedet!', 'Test nektet!', 'tilpasset', frances));
komme tilbake
De tidligere gruppene bør returneres for å forhindre at brukeren fortsetter med koden.
Husk å avslutte saksstrukturen og lukke alle tall.
Trinn 2: Test lyden for brukeren
Dette segmentet eksisterer for å sikre at deltakerens lyd på enheten hverken er for stille eller for høy.
For å gi brukeren en advarsel dukker det opp en meldingsboks og venter på bekreftelse fra brukeren før han fortsetter med lyden: uiwait (msgbox ('Før testen starter, vil vi gjerne gjøre en lydtest for å kontrollere volumet ditt er riktig! Klar? ',' Hold ut! ',' hjelp '));
En sinusbølge spilles med en amplitude på 1 og samplingsfrekvensen på 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); lyd (y, SampleRate);
Brukeren blir deretter stilt et spørsmål med et brukerinntatt svar: Q = input ('Kan du høre lyden? [Y/n] n', 's');
Så er det en stund se etter når Q == 'n', hvis det er sant, gjentas lyden og spør brukeren igjen til svaret har endret seg fra 'n' til 'y': mens Q == 'n' if strcmp (Q, 'n') disp ('Skru volumet på datamaskinen høyere.'); ventelyd; pause (2); Q = input ('Kan du høre lyden nå? [Y/n] n', 's'); ende ende
Det er deretter et øyeblikk å vente før vi fortsetter med den faktiske undersøkelsesdelen av koden.
Trinn 3: Gjør audiometri -testen for høyre øre
I denne koden vil en løkke kjøre for 6 iterasjoner med varierende frekvenser og volumer for hvert enkelt øre. Avhengig av øret du vil teste, vil Out -variabelen ha lyd i en rad og nuller i en annen.
Først lager du to tomme linjevektorer for å registrere frekvenser og amplitude av lyd som brukeren hører.
Denne delen er i en indeksert loop for hvor mange lyder du vil spille hvis du ønsker å randomisere frekvensene som spilles og amplituden.
F er frekvensen: r = (rand*10000); Fs = 250 + r; (randfunksjonen er å lage en tilfeldig generert frekvens) t er en viss tid som går fremover bestemme av: t = linspace (0, Fs*2, Fs*2); s er sinusbølgen: s = sin (2*pi*t*1000); (dette kan multipliseres med den tilfeldige variabelen w for å lage en tilfeldig amplitude/dB -verdi for lydfunksjonen: w = rand;)
Utgangen for høyre øre er: Out = [nuller (størrelse (t)); s] ';
Utgangene spilles gjennom koden: lyd (Out, Fs)
Det neste trinnet er å lage et brukergrensesnitt med kodepostene enten brukeren hørte lyden eller ikke.
Først lager du en figur og bestemmer posisjonen der figuren skal vises: gcbf = figure ('pos', [30 800 350 150]);
*** Hvis knappen ikke vises for deg, kan plasseringen av figuren, som vist med matrisen ovenfor, være plassert feil for datamaskinen din. For å løse dette, endre 30 og 800 verdier til hvilken posisjon du ønsker. For eksempel vil det å ha [0 0 350 150] gi gui -knappen nederst til venstre på skjermen. ***
En vippeknapp er laget for å ta opp når brukeren hører lyden, og posisjonen og displayet kan tilpasses: tb = uicontrol ('Style', 'togglebutton', 'String', 'Trykk på knappen når du hører en lyd', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Denne koden har koden gjenoppta og de tomme vektorene legger til en verdi hvis du trykker på knappen.
Lag deretter en ventefunksjon for å ta inn responsen på knappen og aktivere koden i knappen når du trykker på: h = randi ([4, 7]); uiwait (gcbf, h); (vi gjorde den tilfeldige variabelen h, slik at deltakerne ikke kunne jukse og bestemme antall sekunder som var nødvendig for å svare.)
Etter at løkken er ferdig, behold frekvensutgangsvariabelen (freq_right) i Hz, så la den være i fred. Konverter deretter dB_right-variabelen fra ampere til desibel ved å bruke ligningen: dB_right = mag2db (amp_right)*(-1);
Legg deretter til funksjonen: lukk alle. dette vil gå ut av alle unødvendige tall som kan ha dukket opp.
Legg til en pause -funksjon, ca. 10 sekunder, for å gi brukeren tid til å justere og forberede seg på venstre øre.
Trinn 4: Lag samme kode for venstre øre
Gjenta koden for brukt for høyre øre for å lage det neste segmentet som tester venstre øre. Den eneste forskjellen er å endre hvilken utgangskanal lyden kommer fra. For å gjøre dette, snu rekkefølgen på arrayverdiene for variabelen Out. Det skal se slik ut:
Ut = [s; nuller (størrelse (t))] '';
Ved å gjøre det, kommer det ingen lyd ut av den høyre kanalen, men den venstre kanalen i stedet!
Trinn 5: Lag en side ved side-figur for å sammenligne dataene
Lag nå en graf for å vise dataene! Du legger to grafer i en enkelt figur, så gjør dette!
figur (1); delplot (1, 2, 1); *** delplott (1, 2, 2) for den andre
Legg til disse oppdateringene med spesifikke farger og koordinater for hvert delplott. Disse deler av grafen, avhengig av hvor stor hørselstap det er. Som så:
lapp ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold on % Subplot vil nå inneholde følgende oppdateringer og scatterplots
tekst (3173, 8, 'Normal');
lapp ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % grønn
tekst (3577, 33, 'Mild');
lapp ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % cyan
tekst (2870, 48, 'moderat');
lapp ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % blå
tekst (1739, 62, 'Moderat alvorlig');
lapp ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % lilla
tekst (3142, 80, 'Alvorlig');
lapp ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % rød
tekst (3200, 103, 'Dyp')
Legg deretter til venstre og høyre spredningsplott! Vi kan gi deg et generelt nasjonalt gjennomsnitt for deg! Her:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-verdi, venstre øreNat_dBL = [10 3 10 15 10 15]; % y-verdi
Nat_FreqR = [250 500 1000 2000 4000 8000]; % høyre øre
Nat_dBR = [10 5 10 15 10 15];
Spredningsplottene skal skille mellom venstre og høyre punkt. Du kan gjøre kryss og sirkler!
NL = scatter (Nat_FreqL, Nat_dBL, 'bx'); % plotter blått kryss poengNR = scatter (Nat_FreqR, Nat_dBR, 'ro'); % plotter røde sirkler
Lag en forklaring for den nasjonale grafen ved å tilordne den til bestemte variabler: forklaring ([NL NR], {'title1', 'title2'});
Sett x -grensen din fra 250 til 8000 Hz og din y -grense fra -10 til 120 dB. Husk å endre de vertikale flåttene dine med yticks ()
Merk x -aksen din "Frekvens Hz" og din y -akse "Pitch dB".
Snu y -aksen ved å samle aksen med ax = gca
Bind deretter egenskapen til y -retningen til den med: ax. YDir = 'reverse
Nå er koden for den andre omtrent den samme, men uten forklaring og grafering av scatterplotene med variablene fra venstre og høyre test.
Etter alt dette, legg til en pause -funksjon i omtrent 10 sekunder slik at brukeren kan se på resultatene sine.
Trinn 6: Legg til en liten takkemelding hvis du vil
Dette er bare for moro skyld, men legg til en annen imread (), imshow () og uiwait (msgbox ()) for takk og farvel! Annet enn det, husk å sette clf; Lukk alle; clc; for å lukke alt. Bra jobba du gjorde det!
Anbefalt:
DIY -- Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: 6 trinn
DIY || Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: Mens du lager en edderkopprobot, kan du lære så mange ting om robotikk. Som å lage roboter er både underholdende og utfordrende. I denne videoen skal vi vise deg hvordan du lager en Spider -robot, som vi kan bruke ved hjelp av smarttelefonen vår (Androi
Hvordan lage en MP3 -spiller med LCD ved hjelp av Arduino og DFPlayer Mini MP3 -spillermodul: 6 trinn
Hvordan lage en MP3 -spiller med LCD ved hjelp av Arduino og DFPlayer Mini MP3 -spillermodul: I dag skal vi lage en MP3 -spiller med LCD ved hjelp av Arduino og DFPlayer mini MP3 -spillermodul. Prosjektet kan lese MP3 -filene på SD -kortet og kan sette en pause og spille det samme som enheten for 10 år siden. Og den har også forrige sang og neste sang moro
Hvordan lage analog klokke og digital klokke med LED -stripe ved hjelp av Arduino: 3 trinn
Hvordan lage analog klokke og digital klokke med LED -stripe ved hjelp av Arduino: I dag skal vi lage en analog klokke & Digital klokke med Led Strip og MAX7219 Dot -modul med Arduino. Den vil korrigere tiden med den lokale tidssonen. Den analoge klokken kan bruke en lengre LED -stripe, så den kan henges på veggen for å bli en kunstner
Hvordan lage en hemmelig kommunikator ved hjelp av mikrobit: 9 trinn
Hvordan lage en hemmelig kommunikator ved hjelp av mikrobit: Jeg ble inspirert i 'othermachines' you tube chanal. Her hva jeg fikk fra det -https: //youtu.be/mqlMo4LbfKQHer har jeg lagt til på meg selv - lcd -skjermer - tastatur for andre mikrobit- kraftbanker- Ekstra kode for den
Hvordan lage en drone ved hjelp av Arduino UNO - Lag en quadcopter ved hjelp av mikrokontroller: 8 trinn (med bilder)
Hvordan lage en drone ved hjelp av Arduino UNO | Lag en Quadcopter ved hjelp av mikrokontroller: Introduksjon Besøk min Youtube -kanal En Drone er en veldig dyr gadget (produkt) å kjøpe. I dette innlegget skal jeg diskutere hvordan jeg får det billig? Og hvordan kan du lage din egen slik til en billig pris … Vel, i India er alle materialer (motorer, ESCer