Obsah:

Jak provést test sluchu pro dospělé pomocí MATLABu: 6 kroků
Jak provést test sluchu pro dospělé pomocí MATLABu: 6 kroků

Video: Jak provést test sluchu pro dospělé pomocí MATLABu: 6 kroků

Video: Jak provést test sluchu pro dospělé pomocí MATLABu: 6 kroků
Video: Otestujte, jak staré jsou vaše uši ! 👂 TEST 👂 2024, Červenec
Anonim
Jak provést test sluchu pro dospělé pomocí MATLABu
Jak provést test sluchu pro dospělé pomocí MATLABu

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

Vytvořte vstup uživatele pro analýzu věku uživatele
Vytvořte vstup uživatele pro analýzu věku uživatele
Vytvořte vstup uživatele pro analýzu věku uživatele
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

Otestujte zvuk pro uživatele
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

Proveďte test audiometrie pro pravé ucho
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

Vytvořte stejný kód pro levé ucho
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

Vytvořte vedle sebe obrázek pro porovnání dat
Vytvořte vedle sebe obrázek pro porovnání dat
Vytvořte vedle sebe obrázek pro porovnání dat
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

Pokud chcete, přidejte zprávu s poděkováním!
Pokud chcete, přidejte zprávu s poděkováním!

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: