Inhaltsverzeichnis:
- Schritt 1: Erstellen Sie eine Benutzereingabe, um das Alter des Benutzers zu analysieren
- Schritt 2: Testen Sie das Audio für den Benutzer
- Schritt 3: Führen Sie den Audiometrietest für das rechte Ohr durch
- Schritt 4: Erstellen Sie den gleichen Code für das linke Ohr
- Schritt 5: Erstellen Sie eine Side-by-Side-Abbildung, um die Daten zu vergleichen
- Schritt 6: Fügen Sie eine kleine Dankesnachricht hinzu, wenn Sie möchten
Video: So erstellen Sie mit MATLAB einen Hörtest für Erwachsene – wikiHow
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
HAFTUNGSAUSSCHLUSS: Unser Test ist KEINE medizinische Diagnose und sollte nicht als solche verwendet werden. Um das Gehör genau zu messen, wenden Sie sich bitte an einen Arzt.
Mit Materialien, die wir bereits hatten, machte unsere Gruppe einen Hörtest. Unser Test ist nur für Erwachsene und Jugendliche geeignet, da das Gehör von Kleinkindern in verschiedenen Bereichen liegt und nur von einem Fachmann gemessen werden sollte.
Dieses Projekt wurde inspiriert, als wir in unserer BME MATLAB-Klasse gearbeitet und mit Klängen gespielt haben, die von Sinuswellen erzeugt werden. Wir waren daran interessiert, wie eine Sinuswelle geändert werden kann, um einen Klang in verschiedenen Tonhöhen zu spielen.
Alles, was wir für dieses Projekt brauchten, war ein Computer mit MATLAB R2018b und ein Paar Ohrhörer. Wir haben eine originelle Figur, Frances, als Maskottchen aufgenommen, um das Programm humorvoller zu machen.
Schritt 1: Erstellen Sie eine Benutzereingabe, um das Alter des Benutzers zu analysieren
Der erste Teil dieses Codes besteht darin, eine Benutzereingabe vorzunehmen, in der entschieden wird, ob sie alt genug sind, um den Hörtest durchzuführen. Warum nicht auch alberne Bilder unseres Maskottchens Frances hinzufügen? Laden Sie dazu die mitgelieferte ZIP-Datei herunter und extrahieren Sie sie dann in eine Datei, die in den Code gezogen werden kann. Fahren Sie mit dem Batch-Upload der Datei voller Zeichnungen fort, indem Sie Folgendes verwenden:
Dir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings';GetDir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings\*.jpg';
Um die Nachrichtenboxen und großen Bilder der Zeichnungen zu präsentieren, haben wir diese unterhaltsame Methode verwendet, um Ihnen Frances zu zeigen. Einfach ein Bild Ihrer Wahl im Format einlesen: variable = imread('nameofpicture.jpg');
Fahren Sie dann fort, es anzuzeigen, indem Sie imshow(variable); es wird dann als Figur in Ihrem MatLab angezeigt, wenn Sie es ausführen!
Als nächstes sind die Meldungsfelder, die im gesamten Code verwendet werden. uiwait() ist eine Funktion, bei der der Code angehalten wird, bis die für uiwait gewählte Funktion beendet ist. Diese gewählte Funktion ist msgbox('message', 'title', 'icon')!
Sie können die Nachrichten, die Frances sagt, gerne ändern, solange Sie das obige msgbox()-Format befolgen. Wenn Sie Frances Bilder verwenden möchten, kennzeichnen Sie 'icon' als 'custom' und setzen Sie dies mit einem Komma und der Variablen des Imreads des von Ihnen ausgewählten Bildes fort! Sie können auch die voreingestellten 'Icon'-Typen verwenden. es sollte so aussehen:
hi = imread('Regular.jpg'); % liest das Bild aus der Datei uploadedimshow(hi); uiwait(msgbox('Hallo und vielen Dank, dass Sie sich für unseren Hörtest entschieden haben! Hier ist Frances und er wird Ihnen heute bei Ihrem Test helfen!', 'Willkommen!', 'custom', hi));
Erstellen Sie als Nächstes eine Eingabe, die das Alter des Benutzers so abfragt!
UserAge = input('Bevor wir diesen Test starten, wie alt (Jahre) bist du? (z. B. 32, 56, …)\n', 's');
HINWEIS: Wenn die Zahlen seltsam sind und zu viele sind, verwenden Sie close all, um die früheren Zahlen zu entfernen, während Ihr Code ausgeführt wird
Dann erstellen Sie eine Schaltkastenstruktur! Denken Sie daran, dass die Benutzereingabe eine Zeichenfolge ist und Sie diese in einen numerischen Wert umwandeln müssen. Verwenden Sie also str2double(UserAge). Jeder Fall sollte eine Altersspanne haben, z. B. 4 bis 6 oder 18 bis 40. Um die Variable für einen der Fälle als wahr zu überprüfen, verwenden Sie num2cell(array) wie folgt:
switch str2double(UserAge) % ändert die Variable von einem String in einen numerischen Wert case num2cell(0:3)
frankreich = imread('Ei.jpg');
imshow (Frankreich);
uiwait(msgbox('Sie sind ein Fötus! Frances meint, Sie sollten Ihren Hörtest stattdessen bei einem Arzt machen!', 'Test verweigert!', 'custom', France));
Rückkehr
Die früheren Gruppen sollten zurückgegeben werden, um zu verhindern, dass der Benutzer mit dem Code fortfährt.
Denken Sie daran, die Fallstruktur zu beenden und alle Figuren zu schließen.
Schritt 2: Testen Sie das Audio für den Benutzer
Dieses Segment existiert, um sicherzustellen, dass der Ton des Teilnehmers auf seinem Gerät weder zu leise noch zu laut ist.
Um den Benutzer zu warnen, erscheint ein Meldungsfenster und wartet auf die Bestätigung des Benutzers, bevor es mit dem Ton fortfährt: uiwait(msgbox('Bevor der Test beginnt, möchten wir einen Audiotest durchführen, um Ihre Lautstärke zu überprüfen ist richtig! Bereit?', 'Warte!', 'Hilfe'));
Eine Sinuswelle wird mit einer Amplitude von 1 und einer Abtastrate von 1000 Hz abgespielt: T = [0:1/SampleRate:2]; y = 1*sin(2*pi*200*T); Ton (y, SampleRate);
Dem Benutzer wird dann eine Frage mit einer vom Benutzer eingegebenen Antwort gestellt: Q = input('Können Sie den Ton hören? [j/n] n', 's');
Dann wird eine Weile gesucht, wenn Q == 'n', wenn wahr, dann wiederholt sich der Ton und fragt den Benutzer erneut, bis sich die Antwort von 'n' auf 'y' geändert hat: während Q == 'n' wenn strcmp(Q, 'n') disp('Drehen Sie die Lautstärke Ihres Computers lauter.'); warte_sound; Pause(2); Q = input('Kannst du den Ton jetzt hören? [j/n] n', 's'); Ende Ende
Es gibt dann einen Moment des Wartens, bevor mit dem eigentlichen Prüfungsteil des Codes fortgefahren wird.
Schritt 3: Führen Sie den Audiometrietest für das rechte Ohr durch
In diesem Code wird eine Schleife für 6 Iterationen mit unterschiedlichen Frequenzen und Lautstärken für jedes einzelne Ohr ausgeführt. Je nachdem, welches Ohr Sie testen möchten, hat die Out-Variable in einer Zeile den Ton und in einer anderen Nullen.
Zuerst erstellen Sie zwei leere Linienvektoren, um die Frequenzen und die Amplitude des Schalls aufzuzeichnen, den der Benutzer hört.
Dieser Teil befindet sich in einer indizierten for-Schleife für beliebig viele Sounds, die Sie spielen möchten, wenn Sie die gespielten Frequenzen und die Amplitude zufällig anordnen möchten.
F ist die Frequenz: r = (rand*10000); Fs = 250 + r; (die rand-Funktion soll eine zufällig generierte Frequenz erzeugen) t ist eine bestimmte Zeitspanne, die fortschreitet, bestimmt durch: t = linspace(0, Fs*2, Fs*2); s ist die Sinuswelle: s = sin(2*pi*t*1000); (dies kann mit der Zufallsvariablen w multipliziert werden, um einen zufälligen Amplituden-/dB-Wert für die Klangfunktion zu erhalten: w = rand;)
Die Ausgabe für das rechte Ohr ist: Out = [zeros(size(t)); S]';
Die Ausgaben werden durch den Code abgespielt: sound(Out, Fs)
Der nächste Schritt besteht darin, eine Benutzeroberfläche mit den Codeaufzeichnungen zu erstellen, ob der Benutzer den Ton gehört hat oder nicht.
Zuerst machst du eine Figur und bestimmst die Position, an der die Figur erscheinen soll: gcbf = figure('pos', [30 800 350 150]);
***Wenn die Schaltfläche bei Ihnen nicht angezeigt wird, ist die Position der Abbildung, wie im obigen Array gezeigt, möglicherweise für Ihren Computer falsch positioniert. Um dieses Problem zu lösen, ändern Sie die Werte 30 und 800 in die gewünschte Position. Wenn Sie beispielsweise [0 0 350 150] haben, wird die GUI-Schaltfläche unten links auf dem Monitor angezeigt.***
Ein Togglebutton wird erstellt, um aufzunehmen, wenn der Benutzer den Ton hört, und die Position und Anzeige kann angepasst werden: tb = uicontrol('Style', 'togglebutton', 'String', 'Drücken Sie die Taste, wenn Sie einen Ton hören', ' tag', 'togglebutton1', 'Position', [30 60 300 40], 'Callback', 'uiresume(gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close(gcbf);'); Bei diesem speziellen Code wird der Code fortgesetzt und die leeren Vektoren fügen einen Wert hinzu, wenn die Schaltfläche gedrückt wird.
Erstellen Sie dann eine Wartefunktion, um die Antwort der Schaltfläche aufzunehmen und den Code in der Schaltfläche zu aktivieren, wenn sie gedrückt wird: h = randi([4, 7]); uiwait(gcbf, h); (Wir haben die Zufallsvariable h verwendet, damit die Teilnehmer nicht schummeln und die Anzahl der Sekunden bestimmen konnten, die zum Antworten erforderlich sind.)
Nachdem die Schleife beendet ist, behalten Sie die Frequenzausgangsvariable (freq_right) in Hz bei, also lassen Sie sie in Ruhe. Dann konvertieren Sie die Variable dB_right von Ampere in Dezibel, indem Sie die Gleichung verwenden: dB_right = mag2db(amp_right)*(-1);
Fügen Sie dann die Funktion hinzu: Alle schließen. Dadurch werden unnötige Zahlen vermieden, die möglicherweise aufgetaucht sind.
Fügen Sie eine Pausenfunktion hinzu, etwa 10 Sekunden, um dem Benutzer Zeit zu geben, sich auf das linke Ohr einzustellen und vorzubereiten.
Schritt 4: Erstellen Sie den gleichen Code für das linke Ohr
Wiederholen Sie den Code für das rechte Ohr, um das nächste Segment zu erstellen, das das linke Ohr testet. Der einzige Unterschied besteht darin, zu ändern, von welchem Ausgangskanal der Ton kommt. Drehen Sie dazu die Reihenfolge der Array-Werte für die Variable Out um. Es sollte so aussehen:
Aus = [s; Nullen(Größe(t))]';
Dadurch kommt kein Ton aus dem rechten Kanal, sondern stattdessen aus dem linken Kanal!
Schritt 5: Erstellen Sie eine Side-by-Side-Abbildung, um die Daten zu vergleichen
Erstellen Sie nun ein Diagramm, um die Daten anzuzeigen! Sie fügen zwei Diagramme in eine einzige Abbildung ein, also tun Sie dies!
Figur(1);Teilplot(1, 2, 1); ***Nebenplot(1, 2, 2) für den anderen
Fügen Sie für jede Unterzeichnung diese Patches mit bestimmten Farben und Koordinaten hinzu. Diese Abschnitte aus dem Diagramm, je nachdem, wie groß der Grad des Hörverlusts ist. Wie so:
Pflaster ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); %yellowhold on % Der Subplot enthält jetzt die folgenden Patches und Scatterplots
text(3173, 8, 'Normal');
Pflaster ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % Grün
text(3577, 33, 'mild');
Pflaster ([250 8000 8000 250], [55 55 40 40], [0,16, 0,87, 0,87]); % Cyan
text(2870, 48, 'Mäßig');
Pflaster ([250 8000 8000 250], [70 70 55 55], [0,22, 0,36, 0,94]); % Blau
text(1739, 62, 'Mittelschwer');
Pflaster ([250 8000 8000 250], [90 90 70 70], [0,78, 0,24, 0,78]); % Violett
text(3142, 80, 'Schwer');
Pflaster ([250 8000 8000 250], [120 120 90 90], [0,96, 0,24, 0,24]); % rot
text(3200, 103, 'tiefsinnig')
Fügen Sie dann die linken und rechten Streudiagramme hinzu! Wir können Ihnen einen allgemeinen Landesdurchschnitt zur Verfügung stellen! Hier:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-Wert, linkes OhrNat_dBL = [10 3 10 15 10 15]; % y-Wert
Nat_FreqR = [250 500 1000 2000 4000 8000]; % rechtes Ohr
Nat_dBR = [10 5 10 15 10 15];
Die Streudiagramme sollten die linken und rechten Punkte erkennen. Du könntest Kreuze und Kreise machen!
NL = Scatter(Nat_FreqL, Nat_dBL, 'bx'); % zeichnet blaue Kreuzpunkte aufNR = Scatter(Nat_FreqR, Nat_dBR, 'ro'); % zeichnet rote Kreise
Erstellen Sie eine Legende für die nationale Grafik, indem Sie sie bestimmten Variablen zuweisen: legend([NL NR], {'title1', 'title2'});
Stellen Sie Ihr x-Limit von 250 bis 8000 Hz und Ihr y-Limit von -10 bis 120 dB ein. Denken Sie daran, Ihre vertikalen Ticks mit yticks() zu ändern.
Beschriften Sie Ihre x-Achse mit "Frequenz Hz" und Ihre y-Achse mit "Pitch dB".
Kehren Sie die y-Achse um, indem Sie die Achse mit ax = gca. sammeln
Binden Sie dann die Eigenschaft der y-Richtung daran mit: ax. YDir = 'reverse
Jetzt ist der Code für den zweiten ungefähr gleich, aber ohne die Legende und die Streudiagramme mit den Variablen aus dem linken und rechten Test.
Fügen Sie nach all dem eine Pause-Funktion für etwa 10 Sekunden hinzu, damit sich der Benutzer seine Ergebnisse ansehen kann.
Schritt 6: Fügen Sie eine kleine Dankesnachricht hinzu, wenn Sie möchten
Dies ist nur zum Spaß, wenn Sie möchten, aber fügen Sie noch ein imread(), imshow() und uiwait(msgbox()) als Dankeschön und zum Abschied hinzu! Ansonsten denken Sie daran, clf einzugeben; alle schließen; clc; um alles zu schließen. Gut gemacht, du hast es geschafft!
Empfohlen:
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir
Erstellen Sie einen WLAN-Zugangspunkt und stellen Sie einen Webserver auf NodeMCU V3 bereit - Gunook
Erstellen Sie einen WLAN-Zugangspunkt und stellen Sie einen Webserver auf NodeMCU V3 bereit: Im vorherigen Artikel habe ich bereits über die Verwendung von NodeMCU ESP8266 gesprochen. In dem Artikel erkläre ich, wie man NodeMCU ESP8266 zu Arduini IDE hinzufügt. Es gibt mehrere Möglichkeiten, mit NodeMCU ESP8266 über das Internet zu kommunizieren. NodeMCU als
So erstellen Sie einen 2D-Charakter mit Character Controller in Unreal Engine 4 mit Visual Script für PC - Gunook
So erstellen Sie einen 2D-Charakter mit Character-Controller in Unreal Engine 4 mit Visual Script für PC: So erstellen Sie einen 2D-Charakter mit Character-Controller in Unreal Engine 4 mit Visual Script für PC Hallo, ich bin Jordan Steltz. Ich entwickle Videospiele, seit ich 15 bin. In diesem Tutorial lernen Sie, wie Sie einen einfachen Charakter mit in
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC - DIY (ELECTROINDIA): 4 Schritte
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC | DIY (ELECTROINDIA): In diesem Projekt zeige ich Ihnen, wie Sie einen Tiefpassfilter für Subwoofer herstellen können. Los geht's
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Hinzugefügte Informationen: 4 Schritte
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen … Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Zusätzliche Informationen: Wenn Sie jemals auf eine Website gehen und ein Lied abspielen, das Sie mögen und es wollen, dann ist hier das anweisbare für Sie, nicht meine Schuld, wenn Sie etwas durcheinander bringen (nur so wird es passieren, wenn Sie ohne Grund anfangen, Dinge zu löschen) ) Ich konnte Musik für