Tabla de contenido:
- Paso 1: cree una entrada de usuario para analizar la edad del usuario
- Paso 2: prueba el audio para el usuario
- Paso 3: Realice la prueba de audiometría para el oído derecho
- Paso 4: cree el mismo código para la oreja izquierda
- Paso 5: haga una figura lado a lado para comparar los datos
- Paso 6: ¡Agregue un pequeño mensaje de agradecimiento si lo desea
Video: Cómo hacer una prueba de audición para adultos con MATLAB: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
DESCARGO DE RESPONSABILIDAD: Nuestra prueba NO es un diagnóstico médico y no debe usarse como tal. Para medir la audición con precisión, consulte a un profesional médico.
Utilizando materiales que ya teníamos, nuestro grupo hizo una prueba de audición. Nuestra prueba es solo para adultos y adolescentes porque la audición de los niños pequeños se presenta en varios rangos y solo debe medirla un profesional.
Este proyecto se inspiró mientras trabajaba en nuestra clase de BME MATLAB y jugaba con sonidos hechos por ondas sinusoidales. Estábamos interesados en las formas en que se puede cambiar una onda sinusoidal para reproducir un sonido en diferentes tonos.
Todo lo que necesitábamos para este proyecto era una computadora con MATLAB R2018b y un par de auriculares. Incluimos un personaje original, Frances, como mascota para hacer el programa más divertido.
Paso 1: cree una entrada de usuario para analizar la edad del usuario
La primera parte de este código consiste en realizar una entrada de usuario en la que decida si tiene la edad suficiente para proceder a realizar la prueba de audición. ¿Por qué no hacerlo añadiendo también imágenes tontas de nuestra mascota, Frances? Para hacerlo, descargue el archivo zip incluido y luego extráigalo a un archivo que se puede extraer en el código. Proceda a cargar por lotes el archivo lleno de dibujos usando esto:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings / *. Jpg';
Para presentar los cuadros de mensaje y las imágenes grandes de los dibujos, usamos este divertido método de mostrárselo a Frances. Simplemente lea una imagen de su elección con el formato: variable = imread ('nameofpicture.jpg');
Luego proceda a mostrarlo usando imshow (variable); luego aparecerá como una figura en su MatLab cuando lo ejecute.
A continuación, se encuentran los cuadros de mensaje que se utilizan en todo el código. uiwait () es una función en la que el código se detiene hasta que finaliza la función elegida para uiwait. ¡Esta función elegida es msgbox ('mensaje', 'título', 'icono')!
Puede cambiar los mensajes que dice Frances siempre que siga el formato msgbox () anterior. Si desea utilizar imágenes de Frances, etiquete 'icono' como 'personalizado' y continúe con una coma y la variable de la lectura de la imagen que eligió. También puede utilizar los tipos de 'iconos' preestablecidos. Debe tener un aspecto como este:
hola = imread ('Regular.jpg'); % lee la imagen del archivo subidoimshow (hola); uiwait (msgbox ('¡Hola y gracias por elegir nuestra prueba de audición! ¡Soy Frances y él te ayudará hoy con tu prueba!', '¡Bienvenido!', 'personalizado', hola));
¡A continuación, cree una entrada que pregunte la edad del usuario así!
UserAge = input ('Antes de comenzar esta prueba, ¿cuántos años (años) tienes? (P. Ej., 32, 56,…) n', 's');
NOTA: si las cifras son extrañas y hay demasiadas, use cerrar todo para eliminar las cifras anteriores a medida que se ejecuta su código
¡Entonces crea una estructura de caja de interruptor! Recuerde que la entrada del usuario está en una cadena y debe convertirla en un valor numérico. Entonces usa str2double (UserAge). Cada caso debe tener un rango de edades, como 4 a 6 o 18 a 40. para que la variable a verificar sea verdadera para uno de los casos, use num2cell (matriz) así:
switch str2double (UserAge)% cambia la variable de una cadena a un valor numérico caso num2cell (0: 3)
frances = imread ('Huevo.jpg');
imshow (frances);
uiwait (msgbox ('¡Eres un feto! ¡Frances cree que deberías hacer tu prueba de audición con un médico!', '¡Prueba denegada!', 'personalizado', frances));
regreso
Los grupos anteriores deben devolverse para evitar que el usuario continúe con el código.
Recuerde finalizar la estructura del caso y cerrar todas las figuras.
Paso 2: prueba el audio para el usuario
Este segmento existe para garantizar que el sonido del participante en su dispositivo no sea ni demasiado bajo ni demasiado alto.
Para advertir al usuario, aparece un cuadro de mensaje que espera la confirmación del usuario antes de continuar con el sonido: uiwait (msgbox ('Antes de que comience la prueba, nos gustaría hacer una prueba de audio para asegurarnos de que su volumen ¿Está bien! ¿Listo? ',' ¡Espera! ',' Ayuda '));
Se reproduce una onda sinusoidal con una amplitud de 1 y una frecuencia de muestreo de 1000 Hz: T = [0: 1 / SampleRate: 2]; y = 1 * sin (2 * pi * 200 * T); sonido (y, SampleRate);
Luego se le hace una pregunta al usuario con una respuesta ingresada por el usuario: Q = input ('¿Puedes escuchar el sonido? [Y / n] n', 's');
Luego hay un tiempo para buscar cuando Q == 'n', si es verdadero, entonces el sonido se repite y vuelve a preguntar al usuario hasta que la respuesta haya cambiado de 'n' a 'y': while Q == 'n' if strcmp (Q, 'n') disp ('Aumente el volumen de su computadora.'); esperar_sonido; pausa (2); Q = input ('¿Puedes oír el sonido ahora? [Y / n] n', 's'); fin fin
Luego hay un momento de espera antes de continuar con la parte de examen real del código.
Paso 3: Realice la prueba de audiometría para el oído derecho
En este código, se ejecutará un bucle durante 6 iteraciones con frecuencias y volúmenes variables para cada oído individual. Dependiendo del oído que desee probar, la variable Out tendrá sonido en una fila y ceros en otra.
Primero, crea dos vectores de línea vacíos para registrar las frecuencias y la amplitud del sonido que escucha el usuario.
Esta parte está en un bucle for indexado para la cantidad de sonidos que desee reproducir si desea aleatorizar las frecuencias reproducidas y la amplitud.
F es la frecuencia: r = (rand * 10000); Fs = 250 + r; (la función rand es crear una frecuencia generada aleatoriamente) t es una cierta cantidad de tiempo progresado determinado por: t = linspace (0, Fs * 2, Fs * 2); s es la onda sinusoidal: s = sin (2 * pi * t * 1000); (esto se puede multiplicar por la variable aleatoria w para crear un valor aleatorio de amplitud / dB para la función de sonido: w = rand;)
La salida para el oído derecho es: Out = [zeros (size (t)); s]';
Las salidas se reproducen a través del código: sonido (Out, Fs)
El siguiente paso es crear una interfaz de usuario con los registros de código si el usuario escuchó el sonido o no.
Primero haces una figura y determinas la posición en la que aparecerá la figura: gcbf = figure ('pos', [30 800 350 150]);
*** Si el botón no aparece para usted, la posición de la figura, como se muestra en la matriz de arriba, puede estar mal colocada para su computadora. Para solucionar esto, cambie los valores 30 y 800 a la posición que desee. Por ejemplo, tener [0 0 350 150] generará el botón de la interfaz gráfica de usuario en la parte inferior izquierda del monitor. ***
Se crea un botón de alternancia para grabar cuando el usuario escucha el sonido, y la posición y la visualización se pueden personalizar: tb = uicontrol ('Estilo', 'botón de alternancia', 'Cadena', 'Presione el botón cuando escuche un sonido', ' tag ',' togglebutton1 ',' Posición ', [30 60300 40],' Devolución de llamada ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Este código en particular tiene el resumen del código y los vectores vacíos agregan un valor si se presiona el botón.
Luego cree una función de espera para recibir la respuesta del botón y active el código en el botón cuando se presiona: h = randi ([4, 7]); uiwait (mcdb, h); (Hicimos la variable aleatoria h para que los participantes no pudieran hacer trampa y determinar la cantidad de segundos necesarios para responder).
Una vez finalizado el ciclo, mantenga la variable de salida de frecuencia (freq_right) en Hz, así que déjela en paz. Luego convierta la variable dB_right de amperios a decibelios usando la ecuación: dB_right = mag2db (amp_right) * (- 1);
Luego agregue la función: cerrar todo. esto saldrá de cualquier figura innecesaria que pueda haber aparecido.
Agregue una función de pausa, de unos 10 segundos, para dar tiempo al usuario para que se ajuste y se prepare para el oído izquierdo.
Paso 4: cree el mismo código para la oreja izquierda
Repita el código usado para el oído derecho para hacer el siguiente segmento que prueba el oído izquierdo. La única diferencia es cambiar de qué canal de salida vendrá el sonido. Para hacer esto, cambie el orden de los valores de la matriz para la variable Out. Debe tener un aspecto como este:
Fuera = [s; ceros (tamaño (t))] ';
Al hacerlo, no saldrá sonido del canal derecho, sino del canal izquierdo.
Paso 5: haga una figura lado a lado para comparar los datos
¡Ahora haz una gráfica para mostrar los datos! Estás poniendo dos gráficos en una sola figura, ¡así que haz esto!
figura (1); subparcela (1, 2, 1); *** subtrama (1, 2, 2) para la otra
Para cada subtrama, agregue estos parches con colores y coordenadas específicos. Estas secciones del gráfico dependen de qué tan grande sea el grado de pérdida auditiva. Al igual que:
parche ([250 8000 8000 250], [25 25-10-10], [1,00, 0,89, 0,29]); % yellowhold on% La subtrama ahora contendrá los siguientes parches y diagramas de dispersión
texto (3173, 8, 'Normal');
parche ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % verde
texto (3577, 33, 'leve');
parche ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % cian
texto (2870, 48, 'Moderado');
parche ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % azul
texto (1739, 62, 'Moderadamente severo');
parche ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % púrpura
texto (3142, 80, 'Severo');
parche ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % rojo
texto (3200, 103, 'Profundo')
¡Luego agregue los gráficos de dispersión izquierdo y derecho! ¡Podemos proporcionarle un promedio nacional general! Aquí:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-value, left earNat_dBL = [10 3 10 15 10 15]; % valor y
Nat_FreqR = [250 500 1000 2000 4000 8000]; % oreja derecha
Nat_dBR = [10 5 10 15 10 15];
Los diagramas de dispersión deben distinguir los puntos izquierdo y derecho. ¡Podrías hacer cruces y círculos!
NL = dispersión (Nat_FreqL, Nat_dBL, 'bx'); % traza puntos cruzados azulesNR = dispersión (Nat_FreqR, Nat_dBR, 'ro'); % traza círculos rojos
Haga una leyenda para el gráfico nacional asignándola a variables específicas: leyenda ([NL NR], {'título1', 'título2'});
Establezca su límite x de 250 a 8000 Hz y su límite y de -10 a 120 dB. Recuerde cambiar sus tics verticales con yticks ()
Etiquete su eje x "Frecuencia Hz" y su eje y "Pitch dB".
Invierta el eje y reuniendo el eje con ax = gca
Luego, vincula la propiedad de la dirección y con: ax. YDir = 'reverse
Ahora el código para el segundo es aproximadamente el mismo pero sin la leyenda y graficando los diagramas de dispersión con las variables de las pruebas izquierda y derecha.
Después de todo esto, agregue una función de pausa durante unos 10 segundos para que el usuario pueda ver sus resultados.
Paso 6: ¡Agregue un pequeño mensaje de agradecimiento si lo desea
Esto es solo por diversión si lo desea, pero agregue otro imread (), imshow () y uiwait (msgbox ()) como agradecimiento y despedida. Aparte de eso, recuerde poner clf; cierra todo; clc; para cerrar todo. ¡Buen trabajo lo hiciste!
Recomendado:
Amplificador de auriculares ecualizado para personas con problemas de audición: 10 pasos (con imágenes)
Amplificador de auriculares con ecualización para personas con problemas de audición: mis necesidades Hace algunos meses, me instalaron audífonos para compensar la pérdida de sensibilidad a las frecuencias altas, lo que provocaba que los sonidos se amortiguaran y me resultara difícil distinguir a los sybillants (p. Ej., "S" y "F"). . Pero las ayudas no dan b
Cómo hacer una pequeña estación de prueba de paneles solares: 6 pasos
Cómo hacer una pequeña estación de prueba de paneles solares:
Notificación de timbre para personas con problemas de audición a través de la automatización del hogar (ESP-now, MQTT, Openhab): 3 pasos
Notificación de timbre para personas con problemas de audición a través de la automatización del hogar (ESP-now, MQTT, Openhab): En este Instructable, les muestro cómo integré mi timbre normal en la automatización de mi hogar. Esta solución es muy adecuada para personas con discapacidad auditiva. En mi caso, la uso para recibir una notificación si la habitación está ocupada y es ruidosa en una fiesta de cumpleaños de los niños. I
Cómo hacer una sala de juegos DIY Bartop para 2 jugadores con ranuras para monedas de marquesina personalizadas, usando una caja de Pandora: 17 pasos (con imágenes)
Cómo hacer un arcade de bartop DIY para 2 jugadores con ranuras de monedas de marquesina personalizadas, usando una caja de Pandora: este es un tutorial paso a paso sobre cómo construir una máquina de arcade de barra superior para 2 jugadores que tiene ranuras de monedas personalizadas integradas en la marquesina. Las ranuras para monedas se harán de tal manera que solo acepten monedas del tamaño de 25 centavos y más grandes. Esta sala de juegos funciona
Luz reactiva a la música -- Cómo hacer una luz reactiva a la música súper simple para hacer que el escritorio sea impresionante: 5 pasos (con imágenes)
Luz reactiva de música || Cómo hacer luz reactiva de música súper simple para hacer un escritorio impresionante: Hola chicos, hoy construiremos un proyecto muy interesante. Hoy vamos a construir luz de música reactiva. el bajo, que en realidad es una señal de audio de baja frecuencia. Es muy simple de construir. Nosotros