Πίνακας περιεχομένων:

Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB: 6 βήματα
Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB: 6 βήματα

Βίντεο: Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB: 6 βήματα

Βίντεο: Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB: 6 βήματα
Βίντεο: Ο THUG SLIME ΣΗΚΏΝΕΙ ΠΑΝΩ ΣΤΗ ΣΚΗΝΉ ΕΝΑ ΚΟΡΊΤΣΑΚΙ ΣΕ LIVE ΤΟΥ❗#shorts #thugslime #foryou 2024, Νοέμβριος
Anonim
Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB
Πώς να κάνετε ένα τεστ ακοής ενηλίκων χρησιμοποιώντας το MATLAB

ΑΠΟΠΟΙΗΣΗ: Η δοκιμή μας ΔΕΝ είναι ιατρική διάγνωση και δεν πρέπει να χρησιμοποιείται ως τέτοια. Για να μετρήσετε με ακρίβεια την ακοή, επισκεφτείτε έναν ιατρό.

Χρησιμοποιώντας υλικά που είχαμε ήδη, η ομάδα μας έκανε ένα τεστ ακοής. Η δοκιμή μας απευθύνεται σε ενήλικες και εφήβους μόνο επειδή η ακοή των μικρών παιδιών έρχεται σε διάφορες περιοχές και πρέπει να μετράται μόνο από έναν επαγγελματία.

Αυτό το έργο εμπνεύστηκε ενώ εργαζόμασταν στην τάξη BME MATLAB και παίζαμε με ήχους από ημιτονοειδή κύματα. Μας ενδιέφερε ο τρόπος με τον οποίο μπορεί να αλλάξει ένα ημιτονοειδές κύμα για να παίξει έναν ήχο σε διαφορετικά γήπεδα.

Το μόνο που χρειαζόμασταν για αυτό το έργο ήταν ένας υπολογιστής με MATLAB R2018b και ένα ζευγάρι ακουστικά. Συμπεριλάβαμε έναν πρωτότυπο χαρακτήρα, τη Φράνσις, ως μασκότ για να κάνουμε το πρόγραμμα πιο χιουμοριστικό.

Βήμα 1: Δημιουργήστε μια είσοδο χρήστη για να αναλύσετε την ηλικία του χρήστη

Δημιουργήστε μια είσοδο χρήστη για να αναλύσετε την ηλικία του χρήστη
Δημιουργήστε μια είσοδο χρήστη για να αναλύσετε την ηλικία του χρήστη
Δημιουργήστε μια είσοδο χρήστη για να αναλύσετε την ηλικία του χρήστη
Δημιουργήστε μια είσοδο χρήστη για να αναλύσετε την ηλικία του χρήστη

Το πρώτο μέρος αυτού του κώδικα είναι να κάνετε μια εισαγωγή χρήστη, στην οποία να αποφασίζεται εάν είναι αρκετά μεγάλοι για να προχωρήσουν στη δοκιμή ακοής. Γιατί να μην το κάνουμε προσθέτοντας επίσης ανόητες εικόνες της μασκότ μας, Φράνσις; Για να το κάνετε αυτό, κάντε λήψη του συμπιεσμένου αρχείου και, στη συνέχεια, εξαγάγετε το σε ένα αρχείο που μπορεί να αναρτηθεί στον κώδικα. Προχωρήστε στη μαζική μεταφόρτωση του αρχείου γεμάτο σχέδια χρησιμοποιώντας αυτό:

Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';

Για να παρουσιάσουμε τα κουτιά μηνυμάτων και τις μεγάλες εικόνες των σχεδίων, χρησιμοποιήσαμε αυτήν τη διασκεδαστική μέθοδο για να σας δείξουμε τη Φράνσις. Απλώς ξαναδιαβάστε μια εικόνα της επιλογής σας με τη μορφή: variable = imread ('nameofpicture.jpg');

Στη συνέχεια, προχωρήστε στην εμφάνιση του χρησιμοποιώντας το imshow (μεταβλητή). Στη συνέχεια θα εμφανιστεί ως φιγούρα στο MatLab όταν το εκτελέσετε!

Ακολουθούν τα πλαίσια μηνυμάτων που χρησιμοποιούνται σε όλο τον κώδικα. Το uiwait () είναι μια συνάρτηση στην οποία ο κωδικός σταματά μέχρι να ολοκληρωθεί η απόκλιση που έχει επιλεγεί για το uiwait. Αυτή η επιλεγμένη συνάρτηση είναι το msgbox ("μήνυμα", "τίτλος", "εικονίδιο")!

Μπορείτε να αλλάξετε τα μηνύματα που λέει η Φράνσις, αρκεί να ακολουθήσετε τη μορφή msgbox () παραπάνω. Αν θέλετε να χρησιμοποιήσετε τις εικόνες της Φράνσις, επισημάνετε το «εικονίδιο» ως «προσαρμοσμένο» και προχωρήστε το με κόμμα και τη μεταβλητή του imread της εικόνας που επιλέξατε! Μπορείτε επίσης να χρησιμοποιήσετε τους προκαθορισμένους τύπους «εικονιδίων». θα πρέπει να μοιάζει με αυτό:

hi = imread ('Regular.jpg'); % διαβάζει την εικόνα από το αρχείο που ανέβηκε show (γεια); uiwait (msgbox ("Γεια και ευχαριστώ που επιλέξατε το τεστ ακοής μας! Αυτή είναι η Frances και θα σας βοηθήσει σήμερα με τη δοκιμή σας!", "Καλώς ορίσατε!", "custom", γεια));

Στη συνέχεια, δημιουργήστε μια είσοδο που ζητά την ηλικία του χρήστη έτσι!

UserAge = input ( Πριν ξεκινήσουμε αυτό το τεστ, πόσο χρονών (ετών) είστε; (π.χ. 32, 56,…) n ',' s ');

ΣΗΜΕΙΩΣΗ: εάν οι αριθμοί είναι περίεργοι και είναι πάρα πολλοί, χρησιμοποιήστε το κλείσιμο όλων για να αφαιρέσετε τα προηγούμενα στοιχεία καθώς εκτελείται ο κώδικας

Στη συνέχεια, δημιουργήστε μια δομή θήκης διακόπτη! Θυμηθείτε ότι η είσοδος χρήστη είναι σε συμβολοσειρά και πρέπει να τη μετατρέψετε σε αριθμητική τιμή. Χρησιμοποιήστε λοιπόν το str2double (UserAge). Κάθε περίπτωση θα πρέπει να έχει ένα εύρος ηλικιών όπως 4 έως 6 ή 18 έως 40. για να έχει τη μεταβλητή για να επαληθευτεί ως αληθής για μία από τις περιπτώσεις, χρησιμοποιήστε το num2cell (πίνακας) όπως:

switch str2double (UserAge) % αλλάζει μεταβλητή από συμβολοσειρά σε αριθμητική τιμή num2cell (0: 3)

frances = imread ('Egg.jpg');

imshow (frances)?

uiwait (msgbox ("Είσαι έμβρυο! Η Φράνσις πιστεύει ότι πρέπει να κάνεις το τεστ ακοής σου με γιατρό!", "Δοκιμή αρνήθηκε!", "συνήθεια", φράνσις));

ΕΠΙΣΤΡΟΦΗ

Οι προηγούμενες ομάδες θα πρέπει να επιστρέφονται προκειμένου να αποτραπεί ο χρήστης να προχωρήσει στον κώδικα.

Θυμηθείτε να τερματίσετε τη δομή της υπόθεσης και να κλείσετε όλα τα σχήματα.

Βήμα 2: Δοκιμάστε τον ήχο για τον χρήστη

Δοκιμάστε τον ήχο για τον χρήστη
Δοκιμάστε τον ήχο για τον χρήστη

Αυτό το τμήμα υπάρχει για να διασφαλιστεί ότι ο ήχος του συμμετέχοντα στη συσκευή του δεν είναι ούτε πολύ αθόρυβος ούτε πολύ δυνατός.

Για να δώσει στον χρήστη κάποια προειδοποίηση, εμφανίζεται ένα πλαίσιο μηνυμάτων και περιμένει την επιβεβαίωση από τον χρήστη πριν συνεχίσει με τον ήχο: uiwait (msgbox ('Πριν ξεκινήσει η δοκιμή, θα θέλαμε να κάνουμε μια δοκιμή ήχου για να βεβαιωθούμε είναι σωστό! Έτοιμοι; ',' Υπομονή! ',' βοήθεια '));

Παίζεται ένα ημιτονοειδές κύμα με πλάτος 1 και ρυθμός δειγματοληψίας 1000 Hz: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); ήχος (y, SampleRate);

Στη συνέχεια, ο χρήστης κάνει μια ερώτηση με μια απάντηση που εισάγει ο χρήστης: Q = είσοδος ("Μπορείτε να ακούσετε τον ήχο; [y/n] n ',' s ');

Στη συνέχεια, υπάρχει μια μικρή αναζήτηση για το πότε Q == 'n', αν ισχύει τότε ο ήχος επαναλαμβάνεται και ξαναρώτησε τον χρήστη μέχρι η απάντηση να αλλάξει από 'n' σε 'y': ενώ Q == 'n' αν strcmp (Q, 'n') disp ('Περιστρέψτε την ένταση του υπολογιστή σας πιο δυνατά.'); wait_sound? παύση (2)? Q = είσοδος ("Μπορείτε να ακούσετε τον ήχο τώρα; [y/n] n ',' s '); τέλος τέλος

Στη συνέχεια, υπάρχει μια στιγμή αναμονής πριν μεταφέρετε το πραγματικό τμήμα εξέτασης του κώδικα.

Βήμα 3: Κάντε το τεστ ακουομετρίας για το δεξί αυτί

Κάντε το τεστ ακουομετρίας για το δεξί αυτί
Κάντε το τεστ ακουομετρίας για το δεξί αυτί

Σε αυτόν τον κώδικα, ένας βρόχος θα εκτελείται για 6 επαναλήψεις με διαφορετικές συχνότητες και όγκους για κάθε μεμονωμένο αυτί. Ανάλογα με το αυτί που θέλετε να δοκιμάσετε, η μεταβλητή Out θα έχει ήχο σε μια σειρά και μηδενικά σε μια άλλη.

Αρχικά φτιάχνετε δύο διανύσματα κενών γραμμών για να καταγράψετε τις συχνότητες και το πλάτος του ήχου που ακούει ο χρήστης.

Αυτό το τμήμα βρίσκεται σε έναν ευρετηριασμένο βρόχο για όσες ήχους θέλετε να παίξετε εάν θέλετε να τυχαιοποιήσετε τις συχνότητες που αναπαράγονται και το πλάτος.

F είναι η συχνότητα: r = (rand*10000); Fs = 250 + r; (η συνάρτηση rand είναι να δημιουργήσει μια τυχαία δημιουργούμενη συχνότητα) t είναι ένα ορισμένο χρονικό διάστημα που έχει προχωρήσει καθορίζεται από: t = linspace (0, Fs*2, Fs*2)? s είναι το ημιτονοειδές κύμα: s = sin (2*pi*t*1000); (αυτό μπορεί να πολλαπλασιαστεί με την τυχαία μεταβλητή w για να δημιουργήσει μια τυχαία τιμή πλάτους/dB για τη λειτουργία ήχου: w = rand;)

Η έξοδος για το δεξί αυτί είναι: Έξοδος = [μηδενικά (μέγεθος (t)); μικρό]';

Οι έξοδοι αναπαράγονται μέσω του κωδικού: ήχος (Έξοδος, Fs)

Το επόμενο βήμα είναι να δημιουργήσετε μια διεπαφή χρήστη με τις εγγραφές κώδικα αν ο χρήστης άκουσε τον ήχο ή όχι.

Αρχικά φτιάχνετε ένα σχήμα και καθορίζετε τη θέση στην οποία θα εμφανιστεί το σχήμα: gcbf = σχήμα ('pos', [30 800 350 150]);

*** Εάν το κουμπί δεν εμφανίζεται για εσάς, η θέση του σχήματος, όπως φαίνεται από τον παραπάνω πίνακα, μπορεί να είναι λανθασμένη για τον υπολογιστή σας. Για να το λύσετε αυτό, αλλάξτε τις τιμές 30 και 800 σε όποια θέση θέλετε. Για παράδειγμα, έχοντας [0 0 350 150] θα εμφανιστεί το κουμπί gui στο κάτω αριστερό μέρος της οθόνης. ***

Ένα κουμπί εναλλαγής δημιουργείται για εγγραφή όταν ο χρήστης ακούει τον ήχο και η θέση και η οθόνη μπορούν να προσαρμοστούν: tb = uicontrol ("Style", "togglebutton", "String", "Πατήστε το κουμπί όταν ακούτε έναν ήχο", " ετικέτα ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close (gcbf); '); Αυτός ο συγκεκριμένος κώδικας έχει το βιογραφικό του κώδικα και τα κενά διανύσματα προσθέτουν μια τιμή αν πατηθεί το κουμπί.

Στη συνέχεια, δημιουργήστε μια λειτουργία αναμονής για να λάβετε την απόκριση του κουμπιού και ενεργοποιήστε τον κωδικό στο κουμπί όταν πατήσετε: h = randi ([4, 7]); uiwait (gcbf, h); (κάναμε την τυχαία μεταβλητή h, ώστε οι συμμετέχοντες να μην μπορούν να εξαπατήσουν και να καθορίσουν τον αριθμό των δευτερολέπτων που απαιτούνται για να απαντήσουν.)

Αφού τελειώσει ο βρόχος, διατηρήστε τη μεταβλητή εξόδου συχνότητας (freq_right) σε Hz, οπότε αφήστε την ήσυχη. Στη συνέχεια, μετατρέψτε τη μεταβλητή dB_right από αμπέρ σε ντεσιμπέλ χρησιμοποιώντας την εξίσωση: dB_right = mag2db (amp_right)*(-1);

Στη συνέχεια, προσθέστε τη συνάρτηση: κλείστε όλα. αυτό θα εξέλθει από τυχόν περιττά στοιχεία που μπορεί να έχουν εμφανιστεί.

Προσθέστε μια λειτουργία παύσης, περίπου 10 δευτερόλεπτα, προκειμένου να δώσετε χρόνο στον χρήστη να προσαρμοστεί και να προετοιμαστεί για το αριστερό αυτί.

Βήμα 4: Δημιουργήστε τον ίδιο κωδικό για το αριστερό αυτί

Δημιουργήστε τον ίδιο κωδικό για το αριστερό αυτί
Δημιουργήστε τον ίδιο κωδικό για το αριστερό αυτί

Επαναλάβετε τον κωδικό που χρησιμοποιείται για το δεξί αυτί για να δημιουργήσετε το επόμενο τμήμα που δοκιμάζει το αριστερό αυτί. Η μόνη διαφορά είναι να αλλάξετε από ποιο κανάλι εξόδου θα προέρχεται ο ήχος. Για να το κάνετε αυτό, αναστρέψτε τη σειρά των τιμών του πίνακα για τη μεταβλητή Out. Θα πρέπει να μοιάζει με αυτό:

Έξοδος = [s; μηδενικά (μέγεθος (t))] ';

Με αυτόν τον τρόπο, κανένας ήχος δεν θα βγει από το δεξί κανάλι, αλλά από το αριστερό κανάλι!

Βήμα 5: Κάντε ένα σχήμα δίπλα-δίπλα για να συγκρίνετε τα δεδομένα

Κάντε ένα σχήμα δίπλα-δίπλα για να συγκρίνετε τα δεδομένα
Κάντε ένα σχήμα δίπλα-δίπλα για να συγκρίνετε τα δεδομένα
Κάντε ένα σχήμα δίπλα-δίπλα για να συγκρίνετε τα δεδομένα
Κάντε ένα σχήμα δίπλα-δίπλα για να συγκρίνετε τα δεδομένα

Τώρα κάντε ένα γράφημα για να δείξετε τα δεδομένα! Βάζετε δύο γραφήματα σε ένα μόνο σχήμα, γι 'αυτό κάντε το!

σχήμα (1) · υποπλατ (1, 2, 1) · *** υποπλατ (1, 2, 2) για το άλλο

Για κάθε δευτερεύον οικόπεδο, προσθέστε αυτά τα μπαλώματα με συγκεκριμένα χρώματα και συντεταγμένες. Αυτές οι ενότητες αφαιρούνται από το γράφημα ανάλογα με το πόσο μεγάλος είναι ο βαθμός απώλειας ακοής. Όπως και έτσι:

έμπλαστρο ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % Το υποπαρτίδιο θα διατηρήσει τώρα τα ακόλουθα επιδιορθώσεις και διασπορά

κείμενο (3173, 8, «Κανονικό»).

έμπλαστρο ([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % πράσινο

κείμενο (3577, 33, "ildπιο");

έμπλαστρο ([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-value, αριστερό αυτίNat_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 = scatter (Nat_FreqL, Nat_dBL, 'bx'); % γραφήματα μπλε σταυρωτά σημείαNR = scatter (Nat_FreqR, Nat_dBR, 'ro'); % απεικονίζει κόκκινους κύκλους

Δημιουργήστε έναν θρύλο για το εθνικό γράφημα αντιστοιχίζοντάς τον σε συγκεκριμένες μεταβλητές: legend ([NL NR], {'title1', 'title2'});

Ορίστε το όριο x από 250 έως 8000 Hz και το όριο y από -10 έως 120 dB. Θυμηθείτε να αλλάξετε τα κάθετα τσιμπούρια σας με υτς ()

Προσθέστε ετικέτα στον άξονα x σας "Frequency Hz" και στον άξονα y σας "Pitch dB".

Αντιστρέψτε τον άξονα y συγκεντρώνοντας τον άξονα με ax = gca

Στη συνέχεια, συνδέστε την ιδιότητα της κατεύθυνσης y σε: ax. YDir = 'αντίστροφη

Τώρα ο κώδικας για το δεύτερο είναι περίπου ο ίδιος αλλά χωρίς το μύθο και τη γραφική παράσταση των scatterplots με τις μεταβλητές από το αριστερό και το δεξί τεστ.

Μετά από όλα αυτά, προσθέστε μια λειτουργία παύσης για περίπου 10 δευτερόλεπτα, έτσι ώστε ο χρήστης να μπορεί να δει τα αποτελέσματά του.

Βήμα 6: Προσθέστε ένα μικρό ευχαριστήριο μήνυμα αν θέλετε

Προσθέστε ένα μικρό ευχαριστήριο μήνυμα αν θέλετε!
Προσθέστε ένα μικρό ευχαριστήριο μήνυμα αν θέλετε!

Αυτό είναι μόνο για διασκέδαση αν θέλετε, αλλά προσθέστε ένα άλλο imread (), imshow () και uiwait (msgbox ()) για ένα ευχαριστώ και αντίο! Εκτός από αυτό, θυμηθείτε να βάλετε clf? κλείσ'τα όλα; clc? για να κλείσουν τα πάντα. Μπράβο το έκανες!

Συνιστάται: