Innehållsförteckning:
- Steg 1: Skapa en användarinmatning för att analysera användarens ålder
- Steg 2: Testa ljudet för användaren
- Steg 3: Gör Audiometri -testet för höger öra
- Steg 4: Skapa samma kod för vänster öra
- Steg 5: Gör en sida vid sida-figur för att jämföra data
- Steg 6: Lägg till ett litet tackmeddelande om du vill
Video: Hur man gör ett vuxenhörningstest med MATLAB: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
DISCLAIMER: Vårt test är INTE en medicinsk diagnostik och ska inte användas som sådant. Kontakta en läkare för att mäta hörseln exakt.
Med hjälp av material vi redan hade gjorde vår grupp ett hörselprov. Vårt test är endast avsett för vuxna och tonåringar eftersom små barns hörsel finns i olika intervall och endast bör mätas av en professionell.
Detta projekt inspirerades när vi arbetade i vår BME MATLAB -klass och lekte med ljud från sinusvågor. Vi var intresserade av hur en sinusvåg kan ändras för att spela ett ljud på olika platser.
Allt vi behövde för detta projekt var en dator som kör MATLAB R2018b och ett par öronsnäckor. Vi inkluderade en originalkaraktär, Frances, som en maskot för att göra programmet mer humoristiskt.
Steg 1: Skapa en användarinmatning för att analysera användarens ålder
Den första delen till den här koden är att göra en användarinmatning som avgör om de är tillräckligt gamla för att fortsätta göra hörselprovet. Varför inte göra det genom att också lägga till dumma bilder på vår maskot, Frances? För att göra det, ladda ner zip -filen som ingår och extrahera den sedan till en fil som kan dras upp i koden. Fortsätt att ladda upp filen full av ritningar med hjälp av följande:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
För att presentera meddelanderutorna och stora bilder på ritningarna använde vi denna roliga metod för att visa Frances för dig. Läs bara in en bild efter eget val med formatet: variable = imread ('nameofpicture.jpg');
Fortsätt sedan med att visa den med hjälp av imshow (variabel); den kommer sedan att visas som en figur i din MatLab när du kör den!
Därefter är meddelanderutorna som används i hela koden. uiwait () är en funktion där koden stoppas tills den funktion som väljs för uiwait är klar. Denna valda funktion är msgbox ('meddelande', 'titel', 'ikon')!
Du kan gärna ändra meddelandena Frances säger så länge du följer msgbox () -formatet ovan. Om du vill använda Frances -bilder, märk "ikon" som "anpassad" och fortsätt med ett kommatecken och variabeln för bildens inläsning! Du kan också använda de förinställda "ikon" -typerna. det ska se ut så här:
hi = imread ('Regular.jpg'); % läser bilden från filen uploadedimshow (hi); uiwait (msgbox ('Hej och tack för att du valde vårt hörselprov! Detta är Frances och han hjälper dig idag med ditt test!', 'Välkommen!', 'anpassad', hej));
Skapa sedan en ingång som frågar användarens ålder så!
UserAge = input ('Innan vi börjar detta test, hur gammal (år) är du? (T.ex. 32, 56, …) n', 's');
OBS: om siffrorna är konstiga och det är för många, använd stäng alla för att ta bort de tidigare siffrorna när din kod körs
Skapa sedan en switch case -struktur! Kom ihåg att användarinmatningen är i sträng och du måste konvertera det till ett numeriskt värde. Så använd str2double (UserAge). Varje fall bör ha ett åldersintervall som 4 till 6 eller 18 till 40. för att få variabeln att verifiera som sann för ett av fallen använder num2cell (array) så här:
switch str2double (UserAge) % ändrar variabel från en sträng till ett numeriskt värde fall num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Du är ett foster! Frances tycker att du borde göra ditt hörselprov med en läkare istället!', 'Test nekat!', 'anpassad', frances));
lämna tillbaka
De tidigare grupperna bör returneras för att förhindra att användaren fortsätter med koden.
Kom ihåg att avsluta ärendestrukturen och stänga alla siffror.
Steg 2: Testa ljudet för användaren
Detta segment finns för att säkerställa att deltagarens ljud på deras enhet varken är för tyst eller för högt.
För att ge användaren en varning dyker det upp en meddelanderuta som väntar på bekräftelse från användaren innan han fortsätter med ljudet: uiwait (msgbox ('Innan testet börjar vill vi göra ett ljudtest för att se till att din volym är rätt! Klar? ',' Vänta! ',' hjälp '));
En sinusvåg spelas med en amplitud på 1 och samplingshastigheten på 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); ljud (y, SampleRate);
Användaren får sedan en fråga med ett användarinmatat svar: Q = input ('Kan du höra ljudet? [Y/n] n', 's');
Sedan är det en stund att leta efter när Q == 'n', om det är sant upprepas ljudet och frågar användaren igen tills svaret har ändrats från 'n' till 'y': medan Q == 'n' if strcmp (Q, 'n') disp ('Vrid datorns volym högre.'); vänta_ljud; paus (2); Q = input ('Kan du höra ljudet nu? [Y/n] n', 's'); slutet slut
Det finns sedan ett ögonblick av väntan innan vi fortsätter med den faktiska undersökningsdelen av koden.
Steg 3: Gör Audiometri -testet för höger öra
I denna kod kommer en loop att köras för 6 iterationer med varierande frekvenser och volymer för varje enskilt öra. Beroende på vilket öra du vill testa kommer Out -variabeln att ha ljud i en rad och nollor i en annan.
Först gör du två tomma linjevektorer för att spela in frekvenser och amplitud av ljud som användaren hör.
Den här delen är i en indexerad loop för hur många ljud du vill spela om du vill slumpmässigt spela de frekvenser som spelas och amplituden.
F är frekvensen: r = (rand*10000); Fs = 250 + r; (randfunktionen är att skapa en slumpmässigt genererad frekvens) t är en viss tidsperiod som bestäms av: t = linspace (0, Fs*2, Fs*2); s är sinusvågen: s = sin (2*pi*t*1000); (detta kan multipliceras med slumpvariabeln w för att skapa ett slumpmässigt amplitud/dB -värde för ljudfunktionen: w = rand;)
Utgången för höger öra är: Ut = [nollor (storlek (t)); s] ';
Utgångarna spelas upp genom koden: sound (Out, Fs)
Nästa steg är att skapa ett användargränssnitt med kodposter om användaren hörde ljudet eller inte.
Först gör du en siffra och bestämmer i vilken position figuren ska visas: gcbf = figure ('pos', [30 800 350 150]);
*** Om knappen inte visas för dig kan positionen i figuren, som visas i matrisen ovan, placeras fel för din dator. För att lösa detta, ändra 30 och 800 värden till vilken position du önskar. Till exempel kommer att ha [0 0 350 150] gui -knappen längst ner till vänster på monitorn. ***
En växelknapp görs för att spela in när användaren hör ljudet, och positionen och displayen kan anpassas: tb = uicontrol ('Style', 'togglebutton', 'String', 'Tryck på knappen när du hör ett ljud', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Denna specifika kod har koden återupptas och de tomma vektorerna lägger till ett värde om knappen trycks in.
Skapa sedan en väntefunktion för att ta in svaret på knappen och aktivera koden i knappen när du trycker på: h = randi ([4, 7]); uiwait (gcbf, h); (vi gjorde slumpvariabeln h så att deltagarna inte kunde fuska och bestämma antalet sekunder som var nödvändiga för att svara.)
När slingan är klar, behåll frekvensutmatningsvariabeln (freq_right) i Hz så låt den vara ifred. Konvertera sedan variabeln dB_right från ampere till decibel med hjälp av ekvationen: dB_right = mag2db (amp_right)*(-1);
Lägg sedan till funktionen: stäng alla. detta kommer att gå ur alla onödiga siffror som kan ha dykt upp.
Lägg till en pausfunktion, cirka 10 sekunder, för att ge användaren tid att justera och förbereda sig för vänster öra.
Steg 4: Skapa samma kod för vänster öra
Upprepa koden för används för höger öra för att göra nästa segment som testar vänster öra. Den enda skillnaden är att ändra vilken utgångskanal ljudet kommer från. För att göra detta, vänd ordningen på arrayvärdena för variabeln Out. Det ska se ut så här:
Ut = [s; nollor (storlek (t))] '';
Genom att göra det kommer inget ljud ut från den högra kanalen utan den vänstra kanalen istället!
Steg 5: Gör en sida vid sida-figur för att jämföra data
Gör nu en graf för att visa data! Du lägger två grafer i en enda siffra så gör det här!
figur (1); delplan (1, 2, 1); *** delplan (1, 2, 2) för den andra
För varje delplan lägger du till dessa patchar med specifika färger och koordinater. Dessa delar av diagrammet beroende på hur stor hörselnedsättning det är. Såhär:
patch ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold on % Delplot kommer nu att hålla följande patchar och scatterplots
text (3173, 8, 'Normal');
patch ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % grönt
text (3577, 33, 'Mild');
patch ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % cyan
text (2870, 48, "Måttlig");
patch ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % blå
text (1739, 62, 'Måttligt svår');
patch ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % lila
text (3142, 80, "Allvarlig");
patch ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % röd
text (3200, 103, 'djupgående')
Lägg sedan till vänster och höger spridningsdiagram! Vi kan ge dig ett allmänt nationellt genomsnitt för dig! Här:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-värde, vänster öraNat_dBL = [10 3 10 15 10 15]; % y-värde
Nat_FreqR = [250 500 1000 2000 4000 8000]; % höger öra
Nat_dBR = [10 5 10 15 10 15];
Spridningsplanerna ska urskilja vänster och höger punkter. Du kan göra kors och cirklar!
NL = scatter (Nat_FreqL, Nat_dBL, 'bx'); % plottar blå korspunkterNR = scatter (Nat_FreqR, Nat_dBR, 'ro'); % plottar röda cirklar
Skapa en legend för den nationella grafen genom att tilldela den till specifika variabler: legend ([NL NR], {'title1', 'title2'});
Ställ in din x -gräns från 250 till 8000 Hz och din y -gräns från -10 till 120 dB. Kom ihåg att ändra dina vertikala fästingar med ytstick ()
Märk din x -axel "Frekvens Hz" och din y -axel "Pitch dB".
Vänd y -axeln genom att samla axeln med ax = gca
Bind sedan egenskapen för y -riktningen till den med: ax. YDir = 'reverse
Nu är koden för den andra ungefär densamma men utan förklaring och diagram över spridningsplanerna med variablerna från vänster och höger test.
Efter allt detta, lägg till en pausfunktion i cirka 10 sekunder så att användaren kan titta på sina resultat.
Steg 6: Lägg till ett litet tackmeddelande om du vill
Detta är bara för skojs skull om du vill, men lägg till en annan imread (), imshow () och uiwait (msgbox ()) för ett tack och avsked! Annat än det, kom ihåg att sätta clf; Stäng alla; clc; för att stänga allt. Bra jobbat du gjorde det!
Rekommenderad:
Hur man gör ett USB -minne med ett suddgummi - DIY USB Drive -fodral: 4 steg
Hur man gör ett USB -minne med ett suddgummi | DIY USB Drive Case: Den här bloggen handlar om " Hur man gör USB Flash Drive med ett suddgummi | DIY USB Drive Case " jag hoppas du kommer gilla det
Hur man gör ett smart hem med Arduino -styrrelämodul - Hemmautomationsidéer: 15 steg (med bilder)
Hur man gör ett smart hem med Arduino -styrrelämodul | Hemmautomationsidéer: I detta hemautomatiseringsprojekt kommer vi att designa en smart hemrelämodul som kan styra fem hushållsapparater. Denna relämodul kan styras från mobil eller smartphone, IR -fjärrkontroll eller TV -fjärrkontroll, manuell omkopplare. Detta smarta relä kan också känna av
Hur man gör en drönare med Arduino UNO - Gör en quadcopter med mikrokontroller: 8 steg (med bilder)
Hur man gör en drönare med Arduino UNO | Gör en Quadcopter Med Microcontroller: Introduktion Besök min Youtube -kanal En Drone är en mycket dyr gadget (produkt) att köpa. I det här inlägget ska jag diskutera, hur gör jag det billigt ?? Och hur kan du göra din egen så här till billigt pris … Tja i Indien alla material (motorer, ESC
Hur man gör ett stoppur med Arduino: 8 steg (med bilder)
Hur man gör ett stoppur med Arduino: Detta är en mycket enkel Arduino 16*2 LCD -skärm stoppur ……….. Om du gillar den här instruerbara prenumerationen på min kanal https://www.youtube.com /ZenoModiff
Hur man gör ett tecknat projekt med luftblock och papperskoppar: 8 steg (med bilder)
Hur man gör ett tecknat projekt med Airblock och Paper Cups: Hej alla, Airblock uppmuntrar alltid människor att skapa sina egna DIY -projekt. Idag lär vi dig hur du gör ett tecknat projekt med Airblock och papperskoppar. Den modulära och programmerbara startdrönaren. Konstruera din dröm! Mer information: http: // kc