Daftar Isi:
- Langkah 1: Buat Input Pengguna untuk Menganalisis Usia Pengguna
- Langkah 2: Uji Audio untuk Pengguna
- Langkah 3: Lakukan Tes Audiometri untuk Telinga Kanan
- Langkah 4: Buat Kode yang Sama untuk Telinga Kiri
- Langkah 5: Buat Gambar Berdampingan untuk Membandingkan Data
- Langkah 6: Tambahkan Sedikit Pesan Terima Kasih Jika Anda Mau
Video: Cara Membuat Tes Pendengaran Orang Dewasa Menggunakan MATLAB: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
PENOLAKAN: Tes kami BUKAN diagnostik medis dan tidak boleh digunakan seperti itu. Untuk mengukur pendengaran secara akurat, hubungi profesional medis.
Menggunakan bahan yang sudah kami miliki, kelompok kami membuat tes pendengaran. Tes kami hanya untuk penggunaan orang dewasa dan remaja karena pendengaran anak-anak memiliki berbagai rentang dan harus diukur hanya oleh seorang profesional.
Proyek ini terinspirasi saat bekerja di kelas BME MATLAB kami dan bermain dengan suara yang dibuat oleh gelombang sinus. Kami tertarik dengan cara gelombang sinus dapat diubah untuk memainkan suara pada nada yang berbeda.
Yang kami butuhkan untuk proyek ini adalah komputer yang menjalankan MATLAB R2018b dan sepasang earbud. Kami menyertakan karakter asli, Frances, sebagai maskot untuk membuat program lebih lucu.
Langkah 1: Buat Input Pengguna untuk Menganalisis Usia Pengguna
Bagian pertama dari kode ini adalah membuat input pengguna yang memutuskan apakah mereka cukup umur untuk melanjutkan melakukan tes pendengaran. Mengapa tidak melakukannya dengan menambahkan gambar konyol dari maskot kita, Frances? Untuk melakukannya, unduh file zip yang disertakan dan kemudian ekstrak ke file yang dapat ditarik ke dalam kode. Lanjutkan untuk mengunggah file yang penuh dengan gambar dengan menggunakan ini:
Dir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings';GetDir = 'C:\Users\phoeb\OneDrive\Documents\MATLAB\Frances Drawings\*.jpg';
Untuk menampilkan kotak pesan dan gambar besar dari gambar, kami menggunakan metode menyenangkan untuk menunjukkan Frances kepada Anda. Cukup imread gambar pilihan Anda dengan format: variabel = imread('nameofpicture.jpg');
Kemudian lanjutkan untuk menampilkannya dengan menggunakan imshow(variable); itu kemudian akan muncul sebagai gambar di MatLab Anda ketika Anda menjalankannya!
Berikutnya adalah kotak pesan yang digunakan di seluruh kode. uiwait() adalah fungsi di mana kode dihentikan sampai fungsi yang dipilih untuk uiwait selesai. Fungsi yang dipilih ini adalah msgbox('message', 'title', 'icon')!
Anda dapat dengan bebas mengubah pesan yang dikatakan Frances selama Anda mengikuti format msgbox() di atas. Jika Anda ingin menggunakan gambar Frances, beri label 'icon' sebagai 'custom' dan lanjutkan dengan koma dan variabel imread dari gambar yang Anda pilih! Anda juga dapat menggunakan jenis 'ikon' yang telah ditetapkan sebelumnya. seharusnya terlihat seperti ini:
hi = imread('Reguler.jpg'); % membaca gambar dari file yang diuploadimshow(hi); uiwait(msgbox('Halo dan terima kasih telah memilih tes pendengaran kami! Ini Frances dan dia akan membantu Anda hari ini dengan tes Anda!', 'Selamat datang!', 'custom', hai));
Selanjutnya buat input yang menanyakan usia pengguna seperti itu!
UserAge = input('Sebelum kita memulai tes ini, berapa umur (tahun) Anda? (mis. 32, 56, …)\n', 's');
CATATAN: jika angkanya aneh dan terlalu banyak, gunakan tutup semua untuk menghapus angka sebelumnya saat kode Anda berjalan
Kemudian buat struktur switch case! Ingat bahwa input pengguna dalam string dan Anda perlu mengubahnya menjadi nilai numerik. Jadi gunakan str2double(UserAge). Setiap kasus harus memiliki rentang usia seperti 4 hingga 6 atau 18 hingga 40. agar variabel yang diverifikasi benar untuk salah satu kasus, gunakan num2cell(array) seperti:
switch str2double(UserAge) % mengubah variabel dari string menjadi nilai numerik case num2cell(0:3)
perancis = imread('Telur.jpg');
imshow (Prancis);
uiwait(msgbox('Kamu adalah janin! Frances berpikir kamu harus melakukan tes pendengaran dengan dokter sebagai gantinya!', 'Tes Ditolak!', 'custom', frances));
kembali
Grup sebelumnya harus dikembalikan untuk mencegah pengguna melanjutkan dengan kode.
Ingatlah untuk mengakhiri struktur kasus dan menutup semua angka.
Langkah 2: Uji Audio untuk Pengguna
Segmen ini ada untuk memastikan bahwa suara peserta di perangkat mereka tidak terlalu pelan atau terlalu keras.
Untuk memberikan peringatan kepada pengguna, sebuah kotak pesan muncul dan menunggu konfirmasi dari pengguna sebelum melanjutkan dengan suara: uiwait(msgbox('Sebelum tes dimulai, kami ingin melakukan tes audio untuk memastikan volume Anda benar! Siap?', 'Tunggu!', 'tolong'));
Gelombang sinus dimainkan dengan amplitudo 1 dan laju sampel 1000 Hz: T = [0:1/SampleRate:2]; y = 1*sin(2*pi*200*T); suara(y, SampleRate);
Pengguna kemudian diberi pertanyaan dengan tanggapan yang dimasukkan pengguna: Q = input('Dapatkah Anda mendengar suaranya? [y/n] n', 's');
Kemudian ada beberapa saat mencari ketika Q == 'n', jika benar maka suara berulang dan ditanyakan kembali kepada pengguna hingga jawabannya berubah dari 'n' menjadi 'y': while Q == 'n' if strcmp(Q, 'n') disp('Mengubah volume komputer anda lebih keras.'); tunggu_suara; jeda (2); Q = input('Bisakah kamu mendengar suaranya sekarang? [y/n] n', 's'); akhir akhir
Kemudian ada saat menunggu sebelum melanjutkan ke bagian pemeriksaan kode yang sebenarnya.
Langkah 3: Lakukan Tes Audiometri untuk Telinga Kanan
Dalam kode ini, sebuah loop akan berjalan selama 6 iterasi dengan frekuensi dan volume yang bervariasi untuk setiap telinga individu. Tergantung pada telinga yang ingin Anda uji, variabel Keluar akan memiliki suara di satu baris dan nol di baris lainnya.
Pertama Anda membuat dua vektor garis kosong untuk merekam frekuensi dan amplitudo suara yang didengar pengguna.
Bagian ini berada dalam indeks untuk loop untuk berapa pun banyak suara yang ingin Anda mainkan jika Anda ingin mengacak frekuensi yang dimainkan dan amplitudonya.
F adalah frekuensi: r = (rand*10000); Fs = 250 + r; (fungsi rand adalah untuk membuat frekuensi yang dibangkitkan secara acak) t adalah jumlah waktu tertentu yang ditentukan oleh: t = linspace(0, Fs*2, Fs*2); s adalah gelombang sinus: s = sin(2*pi*t*1000); (ini dapat dikalikan dengan variabel acak w untuk membuat nilai amplitudo/dB acak untuk fungsi suara: w = rand;)
Output untuk telinga kanan adalah: Keluar = [nol(ukuran(t)); S]';
Output dimainkan melalui kode: sound(Out, Fs)
Langkah selanjutnya adalah membuat antarmuka pengguna dengan kode yang merekam apakah pengguna mendengar suara atau tidak.
Pertama Anda membuat gambar dan menentukan posisi di mana gambar akan muncul: gcbf = figure('pos', [30 800 350 150]);
***Jika tombol tidak muncul untuk Anda, posisi gambar, seperti yang ditunjukkan oleh larik di atas, mungkin salah posisi untuk komputer Anda. Untuk mengatasi ini, ubah nilai 30 dan 800 ke posisi mana pun yang Anda inginkan. Misalnya, memiliki [0 0 350 150] akan memunculkan tombol gui di kiri bawah monitor.***
Tombol sakelar dibuat untuk merekam saat pengguna mendengar suara, dan posisi serta tampilan dapat disesuaikan: tb = uicontrol('Style', 'togglebutton', 'String', 'Tekan tombol saat Anda mendengar suara', ' tag', 'togglebutton1', 'Position', [30 60 300 40], 'Callback', 'uiresume(gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; close(gcbf);'); Kode khusus ini memiliki kode resume dan vektor kosong menambah nilai jika tombol ditekan.
Kemudian buat fungsi tunggu untuk memasukkan respons tombol dan mengaktifkan kode di tombol saat ditekan: h = randi([4, 7]); uiwait(gcbf, h); (kami melakukan variabel acak h sehingga peserta tidak dapat menyontek dan menentukan jumlah detik yang diperlukan untuk merespons.)
Setelah loop selesai, pertahankan variabel keluaran frekuensi (freq_right) dalam Hz jadi biarkan saja. Kemudian konversikan variabel dB_right dari amp ke desibel dengan menggunakan persamaan: dB_right = mag2db(amp_right)*(-1);
Kemudian tambahkan fungsi: tutup semua. ini akan keluar dari angka yang tidak perlu yang mungkin muncul.
Tambahkan fungsi jeda, sekitar 10 detik, untuk memberikan waktu bagi pengguna untuk menyesuaikan dan mempersiapkan telinga kiri.
Langkah 4: Buat Kode yang Sama untuk Telinga Kiri
Ulangi kode untuk digunakan untuk telinga kanan untuk membuat segmen berikutnya yang menguji telinga kiri. Satu-satunya perbedaan adalah mengubah saluran keluaran mana suara akan berasal. Untuk melakukannya, balikkan urutan nilai larik untuk variabel Keluar. Seharusnya terlihat seperti ini:
Keluar = [s; nol(ukuran(t))]';
Dengan demikian, tidak ada suara yang akan keluar dari saluran kanan melainkan saluran kiri!
Langkah 5: Buat Gambar Berdampingan untuk Membandingkan Data
Sekarang buatlah grafik untuk menunjukkan data tersebut! Anda menempatkan dua grafik menjadi satu gambar jadi lakukan ini!
angka(1);subplot(1, 2, 1); ***subplot(1, 2, 2) untuk yang lainnya
Untuk setiap subplot, tambahkan patch ini dengan warna dan koordinat tertentu. Bagian ini keluar dari grafik tergantung pada seberapa besar tingkat gangguan pendengarannya. Seperti:
patch([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold pada % Subplot sekarang akan menampung patch dan scatterplot berikut
teks(3173, 8, 'Normal');
tambalan([250 8000 8000 250], [40 40 25 25], [0 0,75 0,25]); % hijau
teks(3577, 33, 'ringan');
patch([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % cyan
teks(2870, 48, 'Sedang');
patch([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); % biru
teks(1739, 62, 'Sedang Parah');
patch([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % ungu
teks(3142, 80, 'Parah');
patch([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % merah
teks (3200, 103, 'Mendalam')
Kemudian tambahkan plot pencar kiri dan kanan! Kami dapat memberikan rata-rata nasional umum untuk Anda! Di Sini:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % nilai-x, earNat_dBL kiri = [10 3 10 15 10 15]; % nilai-y
Nat_FreqR = [250 500 1000 2000 4000 8000]; % telinga kanan
Nat_dBR = [10 5 10 15 10 15];
Plot pencar harus membedakan titik kiri dan kanan. Anda bisa melakukan persilangan dan lingkaran!
NL = pencar(Nat_FreqL, Nat_dBL, 'bx'); % plot titik silang biruNR = scatter(Nat_FreqR, Nat_dBR, 'ro'); % plot lingkaran merah
Buat legenda untuk grafik nasional dengan menetapkannya ke variabel tertentu: legend([NL NR], {'title1', 'title2'});
Tetapkan batas x Anda dari 250 hingga 8000 Hz dan batas y Anda dari -10 hingga 120 dB. Ingatlah untuk mengubah tanda centang vertikal Anda dengan yticks()
Label sumbu x Anda "Frekuensi Hz" dan sumbu y Anda "Pitch dB".
Membalikkan sumbu y dengan mengumpulkan sumbu dengan ax = gca
Kemudian ikat properti arah y dengan: ax. YDir = 'reverse
Sekarang kode untuk yang kedua hampir sama tetapi tanpa legenda dan grafik scatterplot dengan variabel dari tes kiri dan kanan.
Setelah semua ini, tambahkan fungsi jeda selama sekitar 10 detik sehingga pengguna dapat melihat hasilnya.
Langkah 6: Tambahkan Sedikit Pesan Terima Kasih Jika Anda Mau
Ini hanya untuk bersenang-senang jika Anda ingin tetapi tambahkan imread(), imshow() dan uiwait(msgbox()) yang lain sebagai ucapan terima kasih dan perpisahan! Selain itu, ingatlah untuk meletakkan clf; tutup semua; kl; untuk menutup semuanya. Kerja bagus Anda melakukannya!
Direkomendasikan:
Buatan sendiri -- Cara Membuat Robot Laba-laba Yang Dapat Dikendalikan Menggunakan Smartphone Menggunakan Arduino Uno: 6 Langkah
Buatan sendiri || Cara Membuat Robot Laba-laba Yang Dapat Dikendalikan Menggunakan Smartphone Menggunakan Arduino Uno: Saat membuat robot Laba-laba, seseorang dapat mempelajari banyak hal tentang robotika. Seperti membuat Robot itu Menghibur sekaligus menantang. Di video kali ini kami akan menunjukkan cara membuat robot Spider yang bisa kita operasikan menggunakan smartphone (Androi
Cara Membuat Drone Menggunakan Arduino UNO - Membuat Quadcopter Menggunakan Mikrokontroler: 8 Langkah (dengan Gambar)
Cara Membuat Drone Menggunakan Arduino UNO | Membuat Quadcopter Menggunakan Mikrokontroler: PendahuluanKunjungi Saluran Youtube Saya Drone adalah gadget (produk) yang sangat mahal untuk dibeli. Pada postingan kali ini saya akan membahas, bagaimana cara membuatnya dengan harga murah?? Dan Bagaimana Anda bisa membuat sendiri seperti ini dengan harga murah … Nah di India semua bahan (motor, ESC
Membuat Bangku Tes Arduino Kustom Menggunakan Wirewrapping: 7 Langkah (dengan Gambar)
Buat Bangku Tes Arduino Kustom Menggunakan Wirewrapping: Instruksi ini akan menunjukkan kepada Anda cara mudah untuk memasang Arduino Nano ke berbagai papan breakout PCB. Proyek ini muncul selama saya mencari cara yang efektif, tetapi tidak merusak untuk menghubungkan beberapa modul. Saya memiliki lima modul yang ingin saya
Cara yang Sangat Sederhana/mudah/tidak Rumit untuk Membuat Orang/Manusia/Hewan/Robot Terlihat Seperti Memiliki Penglihatan Panas yang Sangat Keren/Terang (Warna Pilihan Anda) Menggunakan GIMP: 4 Langkah
Cara yang Sangat Sederhana/Mudah/Tidak Rumit untuk Membuat Orang/Manusia/Hewan/Robot Terlihat Seperti Memiliki Penglihatan Panas Yang Sangat Keren/Terang (Warna Pilihan Anda) Menggunakan GIMP: Read…the…title
Cara Membuat Kalender Kakek & Scrapbook (Bahkan Jika Anda Tidak Tahu Cara Membuat Scrapbook): 8 Langkah (dengan Gambar)
Cara Membuat Kalender Kakek & Scrapbook (bahkan Jika Anda Tidak Tahu Cara Membuat Scrapbook): Ini adalah hadiah liburan yang sangat ekonomis (dan sangat dihargai!) untuk kakek-nenek. Saya membuat 5 kalender tahun ini dengan harga masing-masing kurang dari $7. Bahan: 12 foto bagus anak Anda, anak-anak, keponakan, anjing, kucing, atau kerabat lainnya12 bagian berbeda