Оглавление:
- Шаг 1. Создайте пользовательский ввод для анализа возраста пользователя
- Шаг 2. Протестируйте звук для пользователя
- Шаг 3. Сделайте аудиометрию для правого уха
- Шаг 4. Создайте тот же код для левого уха
- Шаг 5: сделайте параллельный рисунок для сравнения данных
- Шаг 6: Добавьте небольшое сообщение с благодарностью, если хотите
![Как сделать тест на слух у взрослых с помощью MATLAB: 6 шагов Как сделать тест на слух у взрослых с помощью MATLAB: 6 шагов](https://i.howwhatproduce.com/images/005/image-14113-9-j.webp)
Видео: Как сделать тест на слух у взрослых с помощью MATLAB: 6 шагов
![Видео: Как сделать тест на слух у взрослых с помощью MATLAB: 6 шагов Видео: Как сделать тест на слух у взрослых с помощью MATLAB: 6 шагов](https://i.ytimg.com/vi/lkwCew_AJr0/hqdefault.jpg)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
![Как сделать тест на слух у взрослых с помощью MATLAB Как сделать тест на слух у взрослых с помощью MATLAB](https://i.howwhatproduce.com/images/005/image-14113-10-j.webp)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Наш тест НЕ является медицинской диагностикой и не должен использоваться как таковой. Чтобы точно измерить слух, обратитесь к врачу.
Используя материалы, которые у нас уже были, наша группа провела проверку слуха. Наш тест предназначен для использования взрослыми и подростками только потому, что слух маленьких детей бывает разных диапазонов и должен измеряться только профессионалом.
Этот проект был вдохновлен работой в нашем классе BME MATLAB и игрой со звуками, создаваемыми синусоидальными волнами. Нас интересовало, как можно изменить синусоидальную волну для воспроизведения звука с разной высотой тона.
Все, что нам было нужно для этого проекта, - это компьютер с MATLAB R2018b и пара наушников. Мы включили оригинального персонажа, Фрэнсис, в качестве талисмана, чтобы сделать программу более юмористической.
Шаг 1. Создайте пользовательский ввод для анализа возраста пользователя
![Создайте пользовательский ввод для анализа возраста пользователя Создайте пользовательский ввод для анализа возраста пользователя](https://i.howwhatproduce.com/images/005/image-14113-11-j.webp)
![Создайте пользовательский ввод для анализа возраста пользователя Создайте пользовательский ввод для анализа возраста пользователя](https://i.howwhatproduce.com/images/005/image-14113-12-j.webp)
Первая часть этого кода - сделать пользовательский ввод, в котором решает, достаточно ли он взрослый, чтобы приступить к проверке слуха. Почему бы не сделать это, добавив к тому же глупые картинки нашего талисмана Фрэнсис? Для этого загрузите прилагаемый zip-файл, а затем извлеките его в файл, который можно будет вставить в код. Приступите к пакетной загрузке файла, полного чертежей, используя следующее:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings / *. Jpg';
Чтобы представить окна сообщений и большие изображения рисунков, мы использовали этот забавный способ показать вам Фрэнсис. Просто прочтите изображение по вашему выбору в формате: variable = imread ('nameofpicture.jpg');
Затем перейдите к отображению с помощью imshow (variable); затем он будет отображаться как фигура в вашем MatLab, когда вы его запустите!
Далее идут окна сообщений, которые используются во всем коде. uiwait () - это функция, в которой код останавливается до завершения функции, выбранной для uiwait. Выбранная функция - msgbox ('сообщение', 'заголовок', 'значок')!
Вы можете свободно изменять сообщения, которые говорит Фрэнсис, если вы следуете приведенному выше формату msgbox (). Если вы хотите использовать изображения Фрэнсис, пометьте 'icon' как 'custom' и продолжайте это с запятой и переменной imread изображения, которое вы выбрали! Вы также можете использовать предустановленные типы значков. это должно выглядеть так:
привет = imread ('Regular.jpg'); % читает изображение из загруженного файла imshow (привет); uiwait (msgbox ('Здравствуйте, спасибо, что выбрали наш тест на слух! Это Фрэнсис, он поможет вам сегодня с тестом!', 'Добро пожаловать!', 'custom', привет));
Затем создайте вход, который спрашивает возраст пользователя вот так!
UserAge = input ('Перед тем, как мы начнем этот тест, сколько вам лет (лет)? (Например, 32, 56,…) n', 's');
ПРИМЕЧАНИЕ: если цифры выглядят странно и их слишком много, используйте close all, чтобы удалить более ранние цифры при запуске вашего кода.
Затем создайте структуру корпуса выключателя! Помните, что пользовательский ввод находится в виде строки, и вам нужно преобразовать ее в числовое значение. Так что используйте str2double (UserAge). У каждого случая должен быть диапазон возрастов, например от 4 до 6 или от 18 до 40. чтобы переменная проверялась как истинная для одного из случаев, используйте num2cell (массив) следующим образом:
переключатель str2double (UserAge)% изменяет переменную со строки на числовое значение case num2cell (0: 3)
frances = imread ('Egg.jpg');
imshow (франция);
uiwait (msgbox («Вы - плод! Фрэнсис считает, что вам следует провести тест слуха с врачом!», «Тест отклонен!», «custom», frances));
возвращение
Более ранние группы должны быть возвращены, чтобы пользователь не мог продолжить выполнение кода.
Не забудьте завершить структуру корпуса и закрыть все фигуры.
Шаг 2. Протестируйте звук для пользователя
![Тестирование звука для пользователя Тестирование звука для пользователя](https://i.howwhatproduce.com/images/005/image-14113-13-j.webp)
Этот сегмент существует, чтобы гарантировать, что звук участника на их устройстве не будет ни слишком тихим, ни слишком громким.
Чтобы дать пользователю некоторое предупреждение, появляется окно сообщения и ожидает подтверждения от пользователя, прежде чем продолжить со звуком: uiwait (msgbox ('Перед началом теста мы' хотели бы провести аудиотест, чтобы убедиться, что ваша громкость правильно! Готов? »,« Постой! »,« помогите »));
Воспроизводится синусоида с амплитудой 1 и частотой дискретизации 1000 Гц: T = [0: 1 / SampleRate: 2]; у = 1 * грех (2 * пи * 200 * Т); звук (y, SampleRate);
Затем пользователю задается вопрос с введенным пользователем ответом: Q = input ('Вы слышите звук? [Y / n] n', 's');
Затем немного поищите, когда Q == 'n', если true, то звук будет повторяться и спрашивать пользователя снова, пока ответ не изменится с 'n' на 'y': в то время как Q == 'n', если strcmp (Q, 'n') disp ('Увеличьте громкость вашего компьютера.'); wait_sound; пауза (2); Q = input ('Вы слышите звук сейчас? [Y / n] n', 's'); конец конец
Затем наступает момент ожидания перед тем, как перейти к фактической проверочной части кода.
Шаг 3. Сделайте аудиометрию для правого уха
![Проведите аудиометрию правого уха Проведите аудиометрию правого уха](https://i.howwhatproduce.com/images/005/image-14113-14-j.webp)
В этом коде цикл будет выполняться в течение 6 итераций с различными частотами и объемами для каждого отдельного уха. В зависимости от уха, которое вы хотите проверить, переменная Out будет иметь звук в одной строке и нули в другой.
Сначала вы создаете два пустых линейных вектора для записи частот и амплитуды звука, который слышит пользователь.
Эта часть находится в индексированном цикле for для любого количества звуков, которые вы хотите воспроизвести, если вы хотите рандомизировать воспроизводимые частоты и амплитуду.
F - частота: r = (rand * 10000); Fs = 250 + r; (функция rand заключается в создании случайно сгенерированной частоты) t - это определенное количество времени, которое определяется следующим образом: t = linspace (0, Fs * 2, Fs * 2); s - синусоида: s = sin (2 * pi * t * 1000); (это можно умножить на случайную величину w, чтобы получить случайное значение амплитуды / дБ для звуковой функции: w = rand;)
Выходные данные для правого уха: Out = [нули (размер (t)); s] ';
На выходах воспроизводится код: звук (Out, Fs)
Следующим шагом является создание пользовательского интерфейса с записью кода, слышал ли пользователь звук или нет.
Сначала вы создаете фигуру и определяете позицию, в которой она появится: gcbf = figure ('pos', [30 800 350 150]);
*** Если кнопка не отображается для вас, положение рисунка, как показано в массиве выше, может быть неправильным для вашего компьютера. Чтобы решить эту проблему, измените значения 30 и 800 на любое желаемое положение. Например, при наличии [0 0 350 150] появится кнопка графического интерфейса в нижнем левом углу монитора. ***
Кнопка переключения предназначена для записи, когда пользователь слышит звук, а положение и отображение можно настроить: tb = uicontrol ('Style', 'togglebutton', 'String', 'Нажмите кнопку, когда вы услышите звук', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Обратный вызов ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Этот конкретный код имеет возобновление кода, а пустые векторы добавляют значение, если кнопка нажата.
Затем создайте функцию ожидания для получения ответа кнопки и активации кода в кнопке при нажатии: h = randi ([4, 7]); uiwait (gcbf, h); (мы использовали случайную величину h, чтобы участники не могли обмануть и определить количество секунд, необходимое для ответа.)
После завершения цикла оставьте переменную частотного выхода (freq_right) в Гц, так что оставьте это в покое. Затем преобразуйте переменную dB_right из ампер в децибелы, используя уравнение: dB_right = mag2db (amp_right) * (- 1);
Затем добавьте функцию: закрыть все. это приведет к выходу из любых ненужных фигур, которые могли появиться.
Добавьте функцию паузы, около 10 секунд, чтобы дать пользователю время настроить и подготовиться к левому уху.
Шаг 4. Создайте тот же код для левого уха
![Создайте тот же код для левого уха Создайте тот же код для левого уха](https://i.howwhatproduce.com/images/005/image-14113-15-j.webp)
Повторите код для правого уха, чтобы создать следующий сегмент, который проверяет левое ухо. Единственная разница заключается в изменении выходного канала, из которого будет поступать звук. Для этого измените порядок значений массива для переменной Out. Должно получиться так:
Out = [s; нули (размер (t))] ';
При этом звук не будет выходить из правого канала, а будет выходить только из левого канала!
Шаг 5: сделайте параллельный рисунок для сравнения данных
![Сделайте параллельный рисунок для сравнения данных Сделайте параллельный рисунок для сравнения данных](https://i.howwhatproduce.com/images/005/image-14113-16-j.webp)
![Сделайте параллельный рисунок для сравнения данных Сделайте параллельный рисунок для сравнения данных](https://i.howwhatproduce.com/images/005/image-14113-17-j.webp)
Теперь сделайте график, чтобы показать данные! Вы помещаете два графика в одну фигуру, так что сделайте это!
рисунок (1); подсюжет (1, 2, 1); *** подзаговор (1, 2, 2) для другого
Для каждого участка добавьте эти участки с определенными цветами и координатами. Эти участки выключаются на графике в зависимости от степени потери слуха. Вот так:
патч ([250 8000 8000 250], [25 25-10-10], [1.00, 0.89, 0.29]); % yellowhold на% Подсюжет теперь будет содержать следующие патчи и диаграммы рассеяния
текст (3173, 8, 'Нормальный');
патч ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % зеленый
текст (3577, 33, 'Мягкий');
патч ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % голубой
текст (2870, 48, 'Умеренный');
патч ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % синий
текст (1739, 62, «Умеренно суровый»);
патч ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % фиолетовый
текст (3142, 80, «Серьезный»);
патч ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % красный
текст (3200, 103, 'Глубокий')
Затем добавьте левую и правую диаграмму рассеяния! Мы можем предоставить вам общий средний показатель по стране! Здесь:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-значение, левое earNat_dBL = [10 3 10 15 10 15]; % y-значение
Nat_FreqR = [250 500 1000 2000 4000 8000]; % Правое ухо
Nat_dBR = [10 5 10 15 10 15];
Диаграммы разброса должны различать левую и правую точки. Можно было делать крестики и кружочки!
NL = разброс (Nat_FreqL, Nat_dBL, 'bx'); % отображает синие точки пересечения NR = разброс (Nat_FreqR, Nat_dBR, 'ro'); % отображает красные круги
Сделайте легенду для национального графика, назначив ее определенным переменным: legend ([NL NR], {'title1', 'title2'});
Установите предел x от 250 до 8000 Гц и предел y от -10 до 120 дБ. Не забудьте изменить вертикальные отметки с помощью yticks ()
Обозначьте ось x "Frequency Hz" и ось y "Pitch dB".
Переверните ось y, собирая ось с помощью ax = gca
Затем привяжите к нему свойство направления y с помощью: ax. YDir = 'reverse
Теперь код для второго примерно такой же, но без легенды и графиков точечных диаграмм с переменными из левого и правого тестов.
После всего этого добавьте функцию паузы примерно на 10 секунд, чтобы пользователь мог просмотреть свои результаты.
Шаг 6: Добавьте небольшое сообщение с благодарностью, если хотите
![Добавьте небольшое сообщение с благодарностью, если хотите! Добавьте небольшое сообщение с благодарностью, если хотите!](https://i.howwhatproduce.com/images/005/image-14113-18-j.webp)
Это просто для удовольствия, если вы хотите, но добавьте еще imread (), imshow () и uiwait (msgbox ()) в знак благодарности и прощания! Кроме этого, не забудьте указать clf; закрыть все; clc; чтобы все закрыть. Хорошая работа, вы сделали это!
Рекомендуемые:
Сделай сам -- Как сделать робота-паука, которым можно управлять с помощью смартфона с помощью Arduino Uno: 6 шагов
![Сделай сам -- Как сделать робота-паука, которым можно управлять с помощью смартфона с помощью Arduino Uno: 6 шагов Сделай сам -- Как сделать робота-паука, которым можно управлять с помощью смартфона с помощью Arduino Uno: 6 шагов](https://i.howwhatproduce.com/images/001/image-1099-j.webp)
Сделай сам || Как сделать робота-паука, которым можно управлять с помощью смартфона с помощью Arduino Uno: Создавая робота-паука, можно многое узнать о робототехнике. Например, создание роботов - это не только увлекательно, но и сложно. В этом видео мы покажем вам, как сделать робота-паука, которым мы можем управлять с помощью нашего смартфона (Androi
Как сделать крутые часы своими руками - StickC - Сделать просто: 8 шагов
![Как сделать крутые часы своими руками - StickC - Сделать просто: 8 шагов Как сделать крутые часы своими руками - StickC - Сделать просто: 8 шагов](https://i.howwhatproduce.com/images/001/image-06-49-j.webp)
Сделай сам Как сделать классные часы - StickC - Легко сделать: в этом уроке мы узнаем, как запрограммировать ESP32 M5Stack StickC с Arduino IDE и Visuino для отображения времени на ЖК-дисплее, а также установить время с помощью кнопок StickC
Радио для взрослых - Raspberry Pi: 8 шагов
![Радио для взрослых - Raspberry Pi: 8 шагов Радио для взрослых - Raspberry Pi: 8 шагов](https://i.howwhatproduce.com/images/010/image-27847-j.webp)
Senior Radio - Raspberry Pi: проект Senior Radio - это устройство интернет-радио с открытым исходным кодом, доступное как для аппаратного, так и для программного обеспечения. Он предназначен для пользователей, знакомых с управлением карманным радиоприемником, где циферблаты регулируют громкость, а выбор
Как сделать дрон с помощью Arduino UNO - Сделать квадрокоптер с помощью микроконтроллера: 8 шагов (с картинками)
![Как сделать дрон с помощью Arduino UNO - Сделать квадрокоптер с помощью микроконтроллера: 8 шагов (с картинками) Как сделать дрон с помощью Arduino UNO - Сделать квадрокоптер с помощью микроконтроллера: 8 шагов (с картинками)](https://i.howwhatproduce.com/images/001/image-210-31-j.webp)
Как сделать дрон с помощью Arduino UNO | Сделать квадрокоптер с помощью микроконтроллера: ВведениеПосетите мой канал на Youtube Дрон - очень дорогой гаджет (продукт) для покупки. В этом посте я собираюсь обсудить, как я могу сделать это дешево ?? И как вы можете сделать это своими руками по дешевой цене … Ну, в Индии все материалы (моторы, регуляторы
Обнаружение опухолей головного мозга с помощью МРТ с помощью Matlab: 6 шагов
![Обнаружение опухолей головного мозга с помощью МРТ с помощью Matlab: 6 шагов Обнаружение опухолей головного мозга с помощью МРТ с помощью Matlab: 6 шагов](https://i.howwhatproduce.com/images/005/image-14449-26-j.webp)
Обнаружение опухоли головного мозга с помощью МРТ с помощью Matlab: Авторы: Мадхумита Каннан, Генри Нгуен, Эшли Уррутия Авила, Мей Джин Этот код MATLAB представляет собой программу для определения точного размера, формы и местоположения опухоли, обнаруженной на снимках МРТ головного мозга пациента. Эта программа изначально предназначена для работы с детектором опухолей