Obsah:
- Krok 1: Vytvořte vstup uživatele pro analýzu věku uživatele
- Krok 2: Otestujte zvuk pro uživatele
- Krok 3: Proveďte test audiometrie pro pravé ucho
- Krok 4: Vytvořte stejný kód pro levé ucho
- Krok 5: Vytvořte vedle sebe obrázek pro porovnání dat
- Krok 6: Přidejte zprávu s poděkováním, pokud chcete
Video: Jak provést test sluchu pro dospělé pomocí MATLABu: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
UPOZORNĚNÍ: Náš test NENÍ lékařskou diagnostikou a neměl by být používán jako takový. Chcete -li přesně měřit sluch, navštivte lékaře.
Pomocí materiálů, které jsme již měli, naše skupina provedla test sluchu. Náš test je určen pouze pro dospělé a dospívající, protože sluch malých dětí má různé rozsahy a měl by být měřen pouze odborníkem.
Tento projekt byl inspirován při práci v naší třídě BME MATLAB a hraní se zvuky vydávanými sinusovými vlnami. Zajímaly nás způsoby, jak lze sinusovou vlnu změnit tak, aby hrála zvuk na různých výškách.
K tomuto projektu jsme potřebovali pouze počítač se systémem MATLAB R2018b a pár sluchátek. Jako maskota jsme zařadili originální postavu Frances, aby byl program vtipnější.
Krok 1: Vytvořte vstup uživatele pro analýzu věku uživatele
První částí tohoto kódu je provést vstup uživatele, který rozhodne, zda jsou dost staří na to, aby mohli provést test sluchu. Proč to neudělat také přidáním hloupých obrázků našeho maskota, Frances? Chcete -li to provést, stáhněte zahrnutý soubor zip a poté jej rozbalte do souboru, který lze stáhnout do kódu. Pokračujte v dávkovém nahrávání souboru plného výkresů pomocí tohoto:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Abychom vám mohli zobrazit pole se zprávami a velké obrázky kreseb, použili jsme tuto zábavnou metodu, jak vám ukázat Frances. Jednoduše načtěte obrázek podle svého výběru ve formátu: variable = imread ('nameofpicture.jpg');
Poté jej zobrazte pomocí imshow (proměnná); pak se při spuštění zobrazí jako postava ve vašem MatLabu!
Další jsou pole se zprávami, která se používají v celém kódu. uiwait () je funkce, ve které je kód zastaven, dokud není funkce vybraná pro uiwait dokončena. Tato zvolená funkce je msgbox ('zpráva', 'název', 'ikona')!
Zprávy, které Frances říká, můžete bez obav změnit, pokud budete postupovat podle výše uvedeného formátu msgbox (). Pokud chcete použít obrázky Frances, označte „ikonu“jako „vlastní“a pokračujte čárkou a proměnnou čteného obrázku, který jste vybrali! Můžete také použít přednastavené typy ikon. mělo by to vypadat takto:
hi = imread ('Regular.jpg'); % čte obrázek ze souboru uploadedimshow (hi); uiwait (msgbox ('Dobrý den a děkujeme, že jste si vybrali náš test sluchu! Toto je Frances a dnes vám pomůže s testem!', 'Welcome!', 'custom', hi));
Dále vytvořte vstup, který se takto zeptá na věk uživatele!
UserAge = vstup ('Kolik let (let) než začneme s tímto testem? (Např. 32, 56, …) n', 's');
POZNÁMKA: pokud jsou obrázky podivné a je jich příliš mnoho, použijte close all, abyste odstranili dřívější čísla při spuštění kódu
Pak vytvořte strukturu přepínače! Pamatujte, že vstup uživatele je v řetězci a musíte jej převést na číselnou hodnotu. Použijte tedy str2double (UserAge). Každý případ by měl mít rozmezí věků, například 4 až 6 nebo 18 až 40. Chcete -li proměnnou ověřit jako pravdivou, v jednom z případů použijte num2cell (pole) takto:
přepnout str2double (UserAge) % změní proměnnou z řetězce na číselnou hodnotu case num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (frances);
uiwait (msgbox ('Jste plod! Frances si myslí, že byste místo toho měli udělat test sluchu u lékaře!', 'Test odmítnut!', 'zvyk', frances));
vrátit se
Předchozí skupiny by měly být vráceny, aby se zabránilo uživateli pokračovat v kódu.
Nezapomeňte ukončit strukturu případu a zavřít všechny obrázky.
Krok 2: Otestujte zvuk pro uživatele
Tento segment existuje proto, aby zajistil, že zvuk účastníka na jeho zařízení nebude ani příliš tichý, ani příliš hlasitý.
Aby uživatel dostal nějaké varování, objeví se okno se zprávou a čeká na potvrzení od uživatele, než bude pokračovat se zvukem: uiwait (msgbox ('Před zahájením testu bychom chtěli provést zvukový test, abychom se ujistili, že máte hlasitost máte pravdu! Jste připraveni? ',' Vydržte! ',' pomoc '));
Hraje se sinusová vlna s amplitudou 1 a vzorkovací frekvencí 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); zvuk (y, SampleRate);
Poté je uživateli položena otázka s odpovědí zadanou uživatelem: Q = vstup ('Slyšíte zvuk? [Y/n] n', 's');
Potom chvíli hledejte, kdy Q == 'n', pokud je to pravda, pak se zvuk opakuje a ptá se uživatele znovu, dokud se odpověď nezmění z 'n' na 'y': zatímco Q == 'n' pokud strcmp (Q, 'n') disp ('Zvyšte hlasitost počítače.'); počkat_zvuk; pauza (2); Q = vstup ('Už slyšíte zvuk? [Y/n] n', 's'); konec konec
Poté následuje chvilka čekání, než se přenesete do skutečné části kódu.
Krok 3: Proveďte test audiometrie pro pravé ucho
V tomto kódu proběhne smyčka pro 6 iterací s různými frekvencemi a objemy pro každé jednotlivé ucho. V závislosti na uchu, které chcete testovat, bude mít proměnná Out zvuk v jedné řadě a nuly v jiné.
Nejprve vytvoříte dva prázdné řádkové vektory pro záznam frekvencí a amplitudy zvuku, který uživatel slyší.
Tato část je v indexované smyčce pro mnoho zvuků, které chcete přehrát, pokud si přejete randomizovat přehrávané frekvence a amplitudu.
F je frekvence: r = (rand*10 000); Fs = 250 + r; (funkce rand má vytvořit náhodně generovanou frekvenci) t je určité množství času, které postupuje, podle: t = linspace (0, Fs*2, Fs*2); s je sinusová vlna: s = sin (2*pi*t*1000); (toto lze vynásobit náhodnou proměnnou w pro vytvoření náhodné hodnoty amplitudy/dB pro zvukovou funkci: w = rand;)
Výstup pro pravé ucho je: Out = [nuly (velikost (t)); s] ';
Výstupy se přehrávají pomocí kódu: zvuk (Out, Fs)
Dalším krokem je vytvoření uživatelského rozhraní se záznamy kódu, ať už uživatel zvuk slyšel nebo ne.
Nejprve vytvoříte figurku a určíte polohu, ve které se postava objeví: gcbf = figura ('pos', [30 800 350 150]);
*** Pokud se vám tlačítko nezobrazí, poloha obrázku, jak ukazuje pole výše, může být pro váš počítač umístěna špatně. Chcete -li to vyřešit, změňte hodnoty 30 a 800 na libovolnou pozici, kterou si přejete. Například [0 0 350 150] vyvolá tlačítko gui v levé dolní části monitoru. ***
Přepínací tlačítko slouží k záznamu, když uživatel slyší zvuk, a polohu a zobrazení lze přizpůsobit: tb = uicontrol ('Style', 'togglebutton', 'String', 'Press the button when you hear a sound', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Tento konkrétní kód má obnovení kódu a prázdné vektory přidávají hodnotu, pokud je tlačítko stisknuto.
Poté vytvořte funkci čekání na příjem odpovědi tlačítka a aktivujte kód v tlačítku po stisknutí: h = randi ([4, 7]); uiwait (gcbf, h); (provedli jsme náhodnou proměnnou h, aby účastníci nemohli podvádět a určit počet sekund nezbytných k odpovědi.)
Po dokončení smyčky ponechejte výstupní frekvenční proměnnou (freq_right) v Hz, takže ji nechte na pokoji. Poté převeďte proměnnou dB_right z ampérů na decibely pomocí rovnice: dB_right = mag2db (amp_right)*(-1);
Poté přidejte funkci: zavřít vše. tím opustíte všechny nepotřebné figury, které se mohly objevit.
Přidejte funkci pauzy, asi 10 sekund, aby měl uživatel čas se přizpůsobit a připravit se na levé ucho.
Krok 4: Vytvořte stejný kód pro levé ucho
Opakováním kódu použitého pro pravé ucho vytvoříte další segment, který testuje levé ucho. Jediným rozdílem je změna, z kterého výstupního kanálu bude zvuk pocházet. Chcete -li to provést, otočte pořadí hodnot pole pro proměnnou Out. Mělo by to vypadat takto:
Out = [s; nuly (velikost (t))] ';
Přitom nebude vystupovat žádný zvuk z pravého kanálu, ale z levého kanálu!
Krok 5: Vytvořte vedle sebe obrázek pro porovnání dat
Nyní vytvořte graf pro zobrazení dat! Vkládáte dva grafy do jednoho obrázku, tak to udělejte!
obrázek (1); podkres (1, 2, 1); *** subplot (1, 2, 2) pro ten druhý
Pro každý subplot přidejte tyto opravy se specifickými barvami a souřadnicemi. Tyto části jsou mimo graf v závislosti na tom, jak velký je stupeň ztráty sluchu. Jako tak:
patch ([250 8000 8000 250], [25 25 -10 -10], [1,00, 0,89, 0,29]); % yellowhold na % Subplot nyní bude obsahovat následující patche a scatterploty
text (3173, 8, 'normální');
patch ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % zelená
text (3577, 33, 'mírný');
patch ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % tyrkysová
text (2870, 48, 'Mírný');
patch ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % modrá
text (1739, 62, 'Mírně závažný');
patch ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % nachový
text (3142, 80, 'Závažný');
patch ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % Červené
text (3200, 103, 'Hluboký')
Pak přidejte levý a pravý bodový graf! Můžeme vám poskytnout obecný národní průměr! Tady:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-hodnota, levé uchoNat_dBL = [10 3 10 15 10 15]; % hodnota y
Nat_FreqR = [250 500 1000 2000 4000 8000]; % pravé ucho
Nat_dBR = [10 5 10 15 10 15];
Bodové grafy by měly rozeznat levý a pravý bod. Dalo by se dělat kříže a kruhy!
NL = scatter (Nat_FreqL, Nat_dBL, 'bx'); % vykresluje modré křížové bodyNR = scatter (Nat_FreqR, Nat_dBR, 'ro'); % vykresluje červené kruhy
Vytvořte legendu pro národní graf přiřazením ke konkrétním proměnným: legenda ([NL NR], {'title1', 'title2'});
Nastavte limit x od 250 do 8000 Hz a limit y od -10 do 120 dB. Nezapomeňte změnit svislé zatržítka pomocí yticks ()
Označte svou osu x „Frekvence Hz“a svou osu y „Rozteč dB“.
Otočte osu y shromážděním osy s ax = gca
Potom k němu svažte vlastnost směru y pomocí: ax. YDir = 'reverse
Nyní je kód pro druhý zhruba stejný, ale bez legendy a grafů scatterplotů s proměnnými z levého a pravého testu.
Po tom všem přidejte funkci pozastavení na přibližně 10 sekund, aby se uživatel mohl podívat na své výsledky.
Krok 6: Přidejte zprávu s poděkováním, pokud chcete
Je to jen zábava, pokud chcete, ale přidejte další imread (), imshow () a uiwait (msgbox ()) na poděkování a na rozloučenou! Kromě toho nezapomeňte vložit clf; zavřít vše; clc; aby vše zavřeli. Dobrá práce, zvládli jste to!
Doporučuje:
Jak provést ovládání joystickem pro Arduino: 3 kroky
Jak provést ovládání joystickem pro Arduino: V tomto návodu vám ukážu, jak vyrobit lego joysticky pro arduino
Ovládání Raspberry Pi pomocí Matlabu: 5 kroků
Ovládání Raspberry Pi pomocí Matlabu: Hej, tento tutoriál je o ovládání vašeho bezhlavého malinového pi pomocí matlabu. Možná budete muset nainstalovat matlab na nejnovější verzi, abyste mohli podporovat novější malinovou desku pi
Jak provést přepínač WiFi pomocí ESP8266: 5 kroků
Jak vytvořit přepínač WiFi pomocí ESP8266: V tomto tutoriálu vám ukážu, jak vytvořit drátový přepínač pomocí ESP8266. komunikační médium, které budu používat, je WiFi síť. V předchozím tutoriálu jsem diskutoval o používání ESP8266 ke komunikaci pomocí WiFi sítě. Můžete si přečíst toto
Jak provést dotykový přepínač pomocí jednoho Mosfetu: 4 kroky (s obrázky)
Jak vytvořit dotykový spínač pomocí jednoho mosfetu: JAK VYROBIT DOTYKOVÝ SPÍNAČ POUZE JEDNÝM MOSFETOVÝM TRANSISTOREM V mnoha ohledech jsou MOSFETy lepší než běžné tranzistory a v dnešním tranzistorovém projektu ukážeme, jak vytvořit jednoduchý dotykový spínač, který nahradí normální přepínač s h
Jak provést projekční mapování pomocí čepice Pi: 9 kroků (s obrázky)
Jak provádět projekční mapování pomocí čepice Pi: Inspirovali jsme se vašimi projekty a vytvořili jsme výukový program mapování projekcí pomocí čepice Pi. Pokud chcete, aby váš projekt fungoval bezdrátově přes WiFi, pak je to návod pro vás. Jako software pro mapování projekcí jsme použili MadMapper