Sommario:
- Passaggio 1: creare un input utente per analizzare l'età dell'utente
- Passaggio 2: testare l'audio per l'utente
- Passaggio 3: eseguire il test audiometrico per l'orecchio destro
- Passaggio 4: crea lo stesso codice per l'orecchio sinistro
- Passaggio 5: crea una figura affiancata per confrontare i dati
- Passaggio 6: aggiungi un piccolo messaggio di ringraziamento se lo desideri
Video: Come eseguire un test dell'udito per adulti utilizzando MATLAB: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
DISCLAIMER: Il nostro test NON è una diagnostica medica e non deve essere utilizzato come tale. Per misurare con precisione l'udito, consultare un medico.
Usando i materiali che avevamo già, il nostro gruppo ha fatto un test dell'udito. Il nostro test è solo per adulti e adolescenti perché l'udito dei bambini è disponibile in varie gamme e dovrebbe essere misurato solo da un professionista.
Questo progetto è stato ispirato mentre lavoravamo nella nostra classe BME MATLAB e suonavamo con suoni prodotti da onde sinusoidali. Eravamo interessati ai modi in cui un'onda sinusoidale poteva essere modificata per riprodurre un suono a diverse altezze.
Tutto ciò di cui avevamo bisogno per questo progetto era un computer con MATLAB R2018b e un paio di auricolari. Abbiamo incluso un personaggio originale, Frances, come mascotte per rendere il programma più divertente.
Passaggio 1: creare un input utente per analizzare l'età dell'utente
La prima parte di questo codice consiste nel fare un input da parte dell'utente in cui decide se sono abbastanza grandi per procedere con il test dell'udito. Perché non farlo aggiungendo anche immagini sciocche della nostra mascotte, Frances? Per fare ciò, scarica il file zip incluso e quindi estrailo in un file che può essere richiamato nel codice. Procedi a caricare in batch il file pieno di disegni usando questo:
Dir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings';GetDir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings\*.jpg';
Per presentare le finestre di messaggio e le immagini grandi dei disegni, abbiamo utilizzato questo divertente metodo per mostrarti Frances. Imread semplicemente un'immagine a tua scelta con il formato: variable = imread('nameofpicture.jpg');
Quindi procedi a mostrarlo usando imshow(variable); verrà quindi visualizzato come una figura nel tuo MatLab quando lo esegui!
Poi ci sono le caselle di messaggio che vengono utilizzate in tutto il codice. uiwait() è una funzione in cui il codice viene interrotto fino al termine della funzione scelta per uiwait. Questa funzione scelta è msgbox('message', 'title', 'icon')!
Puoi sentirti libero di cambiare i messaggi che Frances dice fintanto che segui il formato msgbox() sopra. Se vuoi usare le immagini di Frances, etichetta 'icon' come 'custom' e procedi con una virgola e la variabile dell'imread dell'immagine che hai scelto! Puoi anche usare i tipi di 'icona' preimpostati. Dovrebbe sembrare come questo:
ciao = imread('Regular.jpg'); % legge l'immagine dal file uploadedimshow(hi); uiwait(msgbox('Ciao e grazie per aver scelto il nostro test dell'udito! Sono Frances e ti aiuterà oggi con il tuo test!', 'Benvenuto!', 'custom', ciao));
Quindi crea un input che chieda l'età dell'utente in questo modo!
UserAge = input('Prima di iniziare questo test, quanti anni hai (anni)? (es. 32, 56, …)\n', 's');
NOTA: se le cifre sono strane e sono troppe, usa chiudi tutto per rimuovere le cifre precedenti durante l'esecuzione del codice
Quindi crea una struttura del caso di commutazione! Ricorda che l'input dell'utente è in stringa e devi convertirlo in un valore numerico. Quindi usa str2double(UserAge). Ogni caso dovrebbe avere un intervallo di età come da 4 a 6 o da 18 a 40. per verificare che la variabile sia vera per uno dei casi, utilizzare num2cell(array) in questo modo:
switch str2double(UserAge) % cambia variabile da stringa a valore numerico case num2cell(0:3)
frances = imread('Egg.jpg');
imshow (Francia);
uiwait(msgbox('Sei un feto! Frances pensa che dovresti invece fare il test dell'udito con un dottore!', 'Test Negato!', 'custom', frances));
Restituzione
I gruppi precedenti devono essere restituiti per impedire all'utente di procedere con il codice.
Ricorda di terminare la struttura del caso e chiudere tutte le cifre.
Passaggio 2: testare l'audio per l'utente
Questo segmento esiste per garantire che il suono del partecipante sul proprio dispositivo non sia né troppo basso né troppo alto.
Per avvisare l'utente, viene visualizzata una finestra di messaggio e attende la conferma dell'utente prima di continuare con il suono: uiwait(msgbox('Prima che inizi il test, vorremmo eseguire un test audio per assicurarci che il tuo volume ha ragione! Pronto?', 'Aspetta!', 'aiuto'));
Viene riprodotta un'onda sinusoidale con un'ampiezza di 1 e una frequenza di campionamento di 1000 Hz: T = [0:1/SampleRate:2]; y = 1*peccato(2*pi*200*T); sound(y, SampleRate);
All'utente viene quindi posta una domanda con una risposta immessa dall'utente: Q = input('Riesci a sentire il suono? [y/n] n', 's');
Quindi c'è un po' di tempo per cercare quando Q == 'n', se vero, il suono si ripete e chiede di nuovo all'utente fino a quando la risposta non cambia da 'n' a 'y': mentre Q == 'n' if strcmp(Q, 'n') disp('Alza il volume del tuo computer.'); wait_sound; pausa(2); Q = input('Riesci a sentire il suono ora? [s/n] n', 's'); fine fine
C'è poi un momento di attesa prima di passare alla parte di esame vera e propria del codice.
Passaggio 3: eseguire il test audiometrico per l'orecchio destro
In questo codice, un ciclo verrà eseguito per 6 iterazioni con frequenze e volumi variabili per ogni singolo orecchio. A seconda dell'orecchio che si desidera testare, la variabile Out avrà un suono in una riga e degli zeri in un'altra.
Per prima cosa crei due vettori di linea vuoti per registrare le frequenze e l'ampiezza del suono che l'utente sente.
Questa parte è in un loop for indicizzato per tutti i suoni che si desidera riprodurre se si desidera randomizzare le frequenze riprodotte e l'ampiezza.
F è la frequenza: r = (rand*10000); Fs = 250 + r; (la funzione rand è quella di creare una frequenza generata casualmente) t è una certa quantità di tempo trascorso determinato da: t = linspace(0, Fs*2, Fs*2); s è l'onda sinusoidale: s = sin(2*pi*t*1000); (questo può essere moltiplicato per la variabile casuale w per creare un valore casuale di ampiezza/dB per la funzione del suono: w = rand;)
L'output per l'orecchio destro è: Out = [zeros(size(t)); S]';
Le uscite vengono riprodotte tramite il codice: sound(Out, Fs)
Il passaggio successivo consiste nel creare un'interfaccia utente con il codice che registra se l'utente ha sentito o meno il suono.
Per prima cosa fai una figura e determina la posizione in cui apparirà la figura: gcbf = figure('pos', [30 800 350 150]);
***Se il pulsante non viene visualizzato per te, la posizione della figura, come mostrato dall'array sopra, potrebbe essere posizionata in modo errato per il tuo computer. Per risolvere questo problema, modifica i valori 30 e 800 nella posizione desiderata. Ad esempio, avere [0 0 350 150] genererà il pulsante gui in basso a sinistra del monitor.***
Viene creato un pulsante di attivazione per registrare quando l'utente sente il suono e la posizione e la visualizzazione possono essere personalizzate: tb = uicontrol('Style', 'togglebutton', 'String', 'Premere il pulsante quando si sente un suono', ' tag', 'togglebutton1', 'Posizione', [30 60 300 40], 'Richiamata', 'uiresume(gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close(gcbf);'); Questo particolare codice fa riprendere il codice e i vettori vuoti aggiungono un valore se si preme il pulsante.
Quindi creare una funzione di attesa per ricevere la risposta del pulsante e attivare il codice nel pulsante quando viene premuto: h = randi([4, 7]); uiwait(gcbf, h); (abbiamo fatto la variabile casuale h in modo che i partecipanti non potessero barare e determinare il numero di secondi necessari per rispondere.)
Dopo che il ciclo è terminato, mantieni la variabile di uscita della frequenza (freq_right) in Hz, quindi lasciala stare. Quindi converti la variabile dB_right da amp a decibel usando l'equazione: dB_right = mag2db(amp_right)*(-1);
Quindi aggiungi la funzione: chiudi tutto. questo uscirà da tutte le cifre non necessarie che potrebbero essere emerse.
Aggiungere una funzione di pausa, di circa 10 secondi, per dare tempo all'utente di adattarsi e prepararsi per l'orecchio sinistro.
Passaggio 4: crea lo stesso codice per l'orecchio sinistro
Ripeti il codice usato per l'orecchio destro per creare il segmento successivo che mette alla prova l'orecchio sinistro. L'unica differenza sta nel cambiare da quale canale di uscita proverrà il suono. Per fare ciò, invertire l'ordine dei valori dell'array per la variabile Out. Dovrebbe sembrare come questo:
Fuori = [s; zeri(dimensione(t))]';
In questo modo, nessun suono uscirà dal canale destro ma invece dal canale sinistro!
Passaggio 5: crea una figura affiancata per confrontare i dati
Ora fai un grafico per mostrare i dati! Stai mettendo due grafici in una singola figura, quindi fallo!
figura (1); sottotrama (1, 2, 1); ***sottotrama (1, 2, 2) per l'altro
Per ogni sottotrama, aggiungi queste patch con colori e coordinate specifici. Questi sezionano il grafico a seconda di quanto è grande il grado di perdita dell'udito. Così:
patch([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); %yellowhold su % La sottotrama ora conterrà le seguenti patch e grafici a dispersione
testo (3173, 8, "Normale");
patch([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % verde
testo(3577, 33, 'lieve');
patch([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % ciano
text(2870, 48, 'Moderato');
patch([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % blu
testo(1739, 62, "Moderatamente grave");
patch([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % viola
testo (3142, 80, "grave");
patch([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % rosso
text(3200, 103, 'Profondo')
Quindi aggiungi i grafici a dispersione sinistro e destro! Possiamo fornire una media nazionale generale per te! Qui:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % valore x, earNat_dBL sinistro = [10 3 10 15 10 15]; % valore y
Nat_FreqR = [250 500 1000 2000 4000 8000]; % orecchio destro
Nat_dBR = [10 5 10 15 10 15];
I grafici a dispersione dovrebbero distinguere i punti sinistro e destro. Potresti fare croci e cerchi!
NL = scatter(Nat_FreqL, Nat_dBL, 'bx'); % traccia i punti incrociati bluNR = scatter(Nat_FreqR, Nat_dBR, 'ro'); % traccia i cerchi rossi
Crea una legenda per il grafico nazionale assegnandola a variabili specifiche: legend([NL NR], {'title1', 'title2'});
Imposta il tuo limite x da 250 a 8000 Hz e il tuo limite y da -10 a 120 dB. Ricorda di cambiare i segni di spunta verticali con yticks()
Etichetta il tuo asse x "Frequenza Hz" e il tuo asse y "Pitch dB".
Invertire l'asse y raccogliendo l'asse con ax = gca
Quindi associare la proprietà della direzione y ad essa con: ax. YDir = 'reverse
Ora il codice per il secondo è più o meno lo stesso ma senza la legenda e il grafico dei grafici a dispersione con le variabili dei test sinistro e destro.
Dopo tutto questo, aggiungi una funzione di pausa per circa 10 secondi in modo che l'utente possa guardare i risultati.
Passaggio 6: aggiungi un piccolo messaggio di ringraziamento se lo desideri
Questo è solo per divertimento se lo desideri, ma aggiungi un altro imread(), imshow() e uiwait(msgbox()) per un grazie e un addio! A parte questo, ricordati di mettere clf; chiudi tutto; clc; per chiudere tutto. Buon lavoro ce l'hai fatta!
Consigliato:
Terapia a luce rossa LED LLLT per la perdita dell'udito acufene all'orecchio: 4 passaggi
Terapia a luce rossa LED LLLT per l'acufene dell'orecchio Perdita dell'udito: ho avuto un acufene furioso (ronzio nelle orecchie) da quando ho memoria. Quindi, non c'è stata alcuna "soluzione rapida" che sembra aiutare ad alleviarlo. Alcune persone pensano che l'acufene possa essere una reazione agli antibiotici, una reazione agli steroidi, una sensibilità
M5STACK Come visualizzare temperatura, umidità e pressione su M5StickC ESP32 utilizzando Visuino - Facile da eseguire: 6 passaggi
M5STACK Come visualizzare temperatura, umidità e pressione su M5StickC ESP32 utilizzando Visuino - Facile da fare: in questo tutorial impareremo come programmare ESP32 M5Stack StickC con Arduino IDE e Visuino per visualizzare la temperatura, l'umidità e la pressione utilizzando il sensore ENV (DHT12, BMP280, BMM150)
Come eseguire il flashing o programmare il firmware ESP8266 AT utilizzando ESP8266 Flasher and Programmer, modulo IOT Wifi: 6 passaggi
Come eseguire il flashing o programmare il firmware ESP8266 AT utilizzando ESP8266 Flasher and Programmer, modulo IOT Wifi: Descrizione: questo modulo è un adattatore/programmatore USB per moduli ESP8266 di tipo ESP-01 o ESP-01S. È convenientemente dotato di un connettore femmina 2x4P da 2,54 mm per collegare ESP01. Inoltre rompe tutti i pin dell'ESP-01 tramite un 2x4P 2,54 mm maschio h
Come eseguire il prompt dei comandi su un computer bloccato e accedere alla password dell'amministratore: 3 passaggi
Come eseguire il prompt dei comandi su un computer bloccato e accedere alla password dell'amministratore: il nome dice tutto. Questa istruzione ti dirà come eseguire CMD (prompt dei comandi) e modificare la password
Come eseguire facilmente il backup della tua Linux Box utilizzando Rdiff-backup: 9 passaggi
Come eseguire facilmente il backup della tua Linux Box utilizzando Rdiff-backup: questo tutorial ti mostrerà come eseguire un semplice sistema di backup e ripristino completo su Linux utilizzando rdiff-backup e un'unità USB