Mundarija:
- 1 -qadam: Foydalanuvchining yoshini tahlil qilish uchun foydalanuvchi yozuvini yarating
- 2 -qadam: Ovozni foydalanuvchi uchun tekshiring
- 3 -qadam: O'ng quloq uchun audiometriya testini o'tkazing
- 4 -qadam: Chap quloq uchun bir xil kodni yarating
- 5-qadam: Ma'lumotlarni solishtirish uchun yonma-yon rasm yarating
- 6 -qadam: Agar xohlasangiz, sizga bir oz rahmat xabarini qo'shing
Video: MATLAB yordamida kattalar eshitish testini qanday o'tkazish kerak: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Ogohlantirishlar: Bizning testimiz tibbiy tashxis emas va bunday ishlatilmasligi kerak. Eshitishni aniq o'lchash uchun tibbiy mutaxassisga murojaat qiling.
Bizda mavjud bo'lgan materiallardan foydalanib, bizning guruh eshitish testini o'tkazdi. Bizning testimiz kattalar va o'smirlar uchun mo'ljallangan, chunki yosh bolalarning eshitish qobiliyati har xil bo'ladi va faqat professional tomonidan o'lchanishi kerak.
Bu loyiha bizning BME MATLAB sinfimizda ishlayotganda va sinus to'lqinlari chiqargan tovushlar bilan o'ynaganda ilhomlangan. Biz sinus to'lqinni turli xil maydonlarda ovoz chiqarish uchun qanday o'zgartirish mumkinligi bilan qiziqdik.
Bu loyiha uchun bizga faqat MATLAB R2018b ishlaydigan kompyuter va quloqchinlar kerak edi. Biz dasturni kulgili qilish uchun maskot sifatida Frenseni o'ziga xos personajini kiritdik.
1 -qadam: Foydalanuvchining yoshini tahlil qilish uchun foydalanuvchi yozuvini yarating
Ushbu kodning birinchi qismi - bu foydalanuvchilarning eshitish testini o'tkazish uchun etarlimi yoki yo'qligini aniqlaydigan kirish kiritish. Nega buni bizning maskotimiz Fransisning bema'ni rasmlarini qo'shib qilmasligingiz kerak? Buni amalga oshirish uchun zip faylini yuklab oling va keyin uni kodga tortib olinadigan faylga chiqarib oling. Faylni chizmalar bilan to'la -to'kis yuklashga o'ting:
Dir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings'; GetDir = 'C: / Users / phoeb / OneDrive / Documents / MATLAB / Frances Drawings \*. Jpg';
Xabar qutilari va chizmalarning katta rasmlarini taqdim etish uchun biz sizga Frensisni ko'rsatishning qiziqarli usulini qo'lladik. O'zingiz xohlagan rasmni quyidagi formatda o'qing: o'zgaruvchi = imread ('nameofpicture.jpg');
Keyin imshow (o'zgaruvchi) yordamida ko'rsatishni davom eting; u ishga tushirilganda MatLab -da raqam sifatida namoyon bo'ladi!
Keyingi - kod davomida ishlatiladigan xabarlar qutilari. uiwait () - bu funktsiya, uiwait uchun tanlangan funktsiya tugagunga qadar to'xtatiladi. Bu tanlangan funktsiya msgbox ('xabar', 'sarlavha', 'belgi')!
Agar siz yuqoridagi msgbox () formatiga amal qilsangiz, Frensis aytadigan xabarlarni o'zgartirishingiz mumkin. Agar siz Frances rasmlaridan foydalanmoqchi bo'lsangiz, "ikonka" belgisini "odatiy" deb belgilang va siz tanlagan rasmning imread o'zgaruvchisi bilan vergul va davom ettiring! Oldindan o'rnatilgan "ikonka" turlarini ham ishlatishingiz mumkin. u shunday ko'rinishi kerak:
salom = imread ('Regular.jpg'); % yuklanganimshow faylidagi rasmni o'qiydi (salom); uiwait (msgbox ('Salom va eshitish testimizni tanlaganingiz uchun tashakkur! Bu Frensis va u bugun sizning testingizda sizga yordam beradi!', 'Xush kelibsiz!', 'odat', salom));
Keyin foydalanuvchining yoshini so'raydigan kirishni yarating!
UserAge = input ('Bu testni boshlashdan oldin, siz necha yoshdasiz (masalan, 32, 56,…) n', 's');
QAYD: agar raqamlar g'alati bo'lsa va juda ko'p bo'lsa, sizning kodingiz ishga tushganda oldingi raqamlarni olib tashlash uchun hammasini yopish tugmachasini ishlating.
Keyin kommutator korpusining tuzilishini yarating! Shuni esda tutingki, foydalanuvchi kiritish satrda va siz uni raqamli qiymatga aylantirishingiz kerak. Shunday qilib, str2double (UserAge) dan foydalaning. Har bir holatda 4 dan 6 gacha yoki 18 dan 40 gacha bo'lgan yosh oralig'i bo'lishi kerak. O'zgaruvchini haqiqiyligini tekshirish uchun num2cell (massiv) dan foydalaning:
o'tish str2double (UserAge) % o'zgaruvchini mag'lubiyatdan raqamli qiymatga o'zgartiradi num2cell (0: 3)
fransuzlar = imread ('Egg.jpg');
imshow (fransuzlar);
uiwait (msgbox ('Siz homilasiz! Frensis sizning eshitish testingizni shifokor bilan o'tkazishingiz kerak deb o'ylaydi!', 'Test rad etildi!', 'odat', fransuz));
qaytish
Foydalanuvchining kodni ishlatishiga yo'l qo'ymaslik uchun oldingi guruhlar qaytarilishi kerak.
Ish tuzilishini tugatishni va barcha raqamlarni yopishni unutmang.
2 -qadam: Ovozni foydalanuvchi uchun tekshiring
Bu segment ishtirokchining o'z qurilmasidagi ovozi na jim va na baland ovozda bo'lishini ta'minlash uchun mavjud.
Foydalanuvchiga ogohlantirish berish uchun xabar qutisi paydo bo'ladi va ovozni davom ettirishdan oldin foydalanuvchidan tasdiqni kutadi: uiwait (msgbox ("Sinov boshlanishidan oldin, biz" ovoz balandligiga ishonch hosil qilish uchun "audio test" o'tkazmoqchimiz). to'g'ri! Tayyormi? ',' Kutib tur! ',' yordam '));
Sinus to'lqin 1 amplitudasi va 1000 Gts namuna tezligi bilan o'ynaladi: T = [0: 1/SampleRate: 2]; y = 1*sin (2*pi*200*T); ovoz (y, SampleRate);
Keyin foydalanuvchiga foydalanuvchi kiritgan javob bilan savol beriladi: Q = kirish ('Ovozni eshitasizmi? [Y/n] n', 's');
Q == 'n', agar rost bo'lsa, ovoz takrorlanadi va javob 'n' dan 'y' ga o'zgarguncha foydalanuvchidan yana so'raydi: Q == 'n' bo'lsa strcmp (Q, 'n') disp ('Kompyuteringiz ovozini balandroq qiling.'); kutish_sound; pauza (2); Q = kiritish ('Siz hozir ovozni eshitayapsizmi? [Y/n] n', 's'); oxiri oxiri
Kodning haqiqiy tekshiruv qismiga o'tishdan oldin kutish kerak.
3 -qadam: O'ng quloq uchun audiometriya testini o'tkazing
Ushbu kodda, har bir quloq uchun turli chastotalar va tovushlar bilan 6 ta takrorlash uchun pastadir ishlaydi. Siz tekshirmoqchi bo'lgan quloqqa qarab, Out o'zgaruvchisi bir qatorda tovush, ikkinchisida nol bo'ladi.
Birinchidan, foydalanuvchi eshitadigan tovush chastotalari va amplitudasini yozib olish uchun ikkita bo'sh chiziqli vektor yaratasiz.
Agar siz chastotalar va amplitudani tasodifiy tanlashni xohlasangiz, siz eshitmoqchi bo'lgan tovushlar soni uchun indekslangan.
F - chastota: r = (rand*10000); Fs = 250 + r; (rand funktsiyasi tasodifiy hosil qilingan chastotani yaratishdir) t ma'lum vaqt davom etadi: t = linspace (0, Fs*2, Fs*2); s - sinus to'lqin: s = sin (2*pi*t*1000); (bu tovush funktsiyasi uchun tasodifiy amplituda/dB qiymatini yaratish uchun w tasodifiy o'zgaruvchiga ko'paytirilishi mumkin: w = rand;)
O'ng quloq uchun chiqish: Out = [nol (o'lcham (t)); s] ';
Chiqish kod orqali eshitiladi: ovoz (Out, Fs)
Keyingi qadam, foydalanuvchi ovozni eshitgan yoki eshitmaganligini kodli yozuvlar bilan foydalanuvchi interfeysini yaratishdir.
Avval siz raqam yasaysiz va bu rasm paydo bo'ladigan joyni aniqlaysiz: gcbf = raqam ('pos', [30 800 350 150]);
*** Agar tugma siz uchun ko'rinmasa, yuqoridagi qator ko'rsatganidek, rasmning joylashuvi kompyuteringiz uchun noto'g'ri joylashtirilgan bo'lishi mumkin. Buni hal qilish uchun 30 va 800 qiymatlarini xohlagan pozitsiyasiga o'zgartiring. Masalan, [0 0 350 150] bo'lsa, monitorning chap pastki qismidagi gui tugmasi paydo bo'ladi. ***
Foydalanuvchi ovozni eshitganda yozib olish uchun tugmachani bosadi va joylashuv va displeyni sozlash mumkin: tb = uicontrol ('Style', 'togglebutton', 'String', 'Ovoz eshitilganda tugmani bosing', ' tag ',' togglebutton1 ',' Position ', [30 60 300 40],' Callback ',' uiresume (gcbf); freq_right = [freq_right, F]; amp_right = [amp_right, w]; yopish (gcbf); '); Ushbu kodda rezyume kodi mavjud va tugma bosilsa bo'sh vektorlar qiymat qo'shadi.
Keyin tugmachaning javobini qabul qilish uchun kutish funktsiyasini yarating va tugma bosilganda kodni faollashtiring: h = randi ([4, 7]); uiwait (gcbf, h); (biz h tasodifiy o'zgaruvchini qildik, shuning uchun ishtirokchilar aldashga va javob berish uchun zarur bo'lgan soniyalar sonini aniqlay olmaydilar.)
Loop tugagandan so'ng, chastotali chiqish o'zgaruvchisini (freq_right) Hz da saqlang, shuning uchun uni yolg'iz qoldiring. Keyin dB_right o'zgaruvchisini amperdan desibelga quyidagi tenglama yordamida aylantiring: dB_right = mag2db (amp_right)*(-1);
Keyin funktsiyani qo'shing: barchasini yoping. bu paydo bo'lishi mumkin bo'lgan keraksiz raqamlardan chiqib ketadi.
Foydalanuvchiga chap quloqni sozlash va tayyorlash uchun vaqt berish uchun taxminan 10 soniya pauza funksiyasini qo'shing.
4 -qadam: Chap quloq uchun bir xil kodni yarating
Chap quloqni tekshiradigan keyingi segmentni yaratish uchun o'ng quloq uchun ishlatilgan kodni takrorlang. Yagona farq - ovoz qaysi chiqish kanalidan chiqishini o'zgartirish. Buning uchun Out o'zgaruvchisining massiv qiymatlari tartibini aylantiring. Bu shunday ko'rinishi kerak:
Chiqish = [s; nol (o'lcham (t))] ';
Shunday qilib, o'ng kanaldan, chap kanaldan boshqa ovoz chiqmaydi!
5-qadam: Ma'lumotlarni solishtirish uchun yonma-yon rasm yarating
Endi ma'lumotlarni ko'rsatish uchun grafik tuzing! Siz ikkita grafikni bitta rasmga joylashtiryapsiz, shunday qiling!
rasm (1); kichik reja (1, 2, 1); *** ikkinchisining pastki qismi (1, 2, 2)
Har bir kichik uchastka uchun, bu ranglarni va koordinatalarni aniqlang. Bu bo'lim eshitish qobiliyatining qanchalik katta bo'lishiga bog'liq. Xuddi shunday:
yamoq ([250 8000 8000 250], [25 25 -10 -10], [1.00, 0.89, 0.29]); % yellowhold on % Subplotda endi quyidagi yamaqlar va tarqatish joylari bo'ladi
matn (3173, 8, "Oddiy");
yamoq ([250 8000 8000 250], [40 40 25 25], [0 0.75 0.25]); % yashil
matn (3577, 33, "Yumshoq");
yamoq ([250 8000 8000 250], [55 55 40 40], [0.16, 0.87, 0.87]); % ko'k
matn (2870, 48, "O'rtacha");
yamoq ([250 8000 8000 250], [70 70 55 55], [0.22, 0.36, 0.94]); % ko'k
matn (1739, 62, "O'rtacha og'ir");
yamoq ([250 8000 8000 250], [90 90 70 70], [0.78, 0.24, 0.78]); % siyohrang
matn (3142, 80, "Og'ir");
yamoq ([250 8000 8000 250], [120 120 90 90], [0.96, 0.24, 0.24]); % qizil
matn (3200, 103, "chuqur")
Keyin chap va o'ngga tarqalish uchastkalarini qo'shing! Biz siz uchun umumiy milliy o'rtacha ko'rsatkichni taqdim eta olamiz! Bu yerda:
Nat_FreqL = [250 500 1000 2000 4000 8000]; % x-qiymati, chap earNat_dBL = [10 3 10 15 10 15]; % y-qiymati
Nat_FreqR = [250 500 1000 2000 4000 8000]; % o'ng quloq
Nat_dBR = [10 5 10 15 10 15];
Tarqatish rejalari chap va o'ng nuqtalarni ajratib ko'rsatishi kerak. Siz xoch va doiralar qilishingiz mumkin edi!
NL = tarqatish (Nat_FreqL, Nat_dBL, 'bx'); % chiziqlar ko'k kesish nuqtalariNR = tarqatish (Nat_FreqR, Nat_dBR, 'ro'); % qizil doiralarni chizadi
Milliy grafikni ma'lum o'zgaruvchilarga belgilab afsona yarating: afsona ([NL NR], {'title1', 'title2'});
X chegarangizni 250 dan 8000 Gts gacha va y chegarangizni -10 dan 120 dB gacha sozlang. Vertikal shomilingizni yticks () bilan o'zgartirishni unutmang.
X o'qini "Hz chastotasi" va y o'qini "Pitch dB" deb belgilang.
Ax o'qini ax = gca bilan yig'ib, y o'qini teskari aylantiring
Keyin y yo'nalishi xususiyatini unga bog'lang: ax. YDir = 'teskari
Endi ikkinchisining kodi taxminan bir xil, lekin afsonasiz va tarqatish nuqtalarini chap va o'ngdagi o'zgaruvchilar bilan chizish.
Bularning barchasidan so'ng, foydalanuvchi o'z natijalarini ko'rishi uchun taxminan 10 soniya pauza funksiyasini qo'shing.
6 -qadam: Agar xohlasangiz, sizga bir oz rahmat xabarini qo'shing
Agar xohlasangiz, rahmat va xayrlashish uchun boshqa imread (), imshow () va uiwait (msgbox ()) qo'shsangiz, bu faqat o'yin -kulgi uchun! Bundan tashqari, clf qo'yishni unutmang; hammasini yopish; clc; hamma narsani yopish uchun. Yaxshi ish qildingiz!
Tavsiya:
Raspberry Pi yordamida jonli efirni qanday o'tkazish kerak: 5 qadam
Raspberry Pi -dan foydalanib qanday translatsiya qilish kerak: Ushbu qo'llanmada biz Raspberry Pi -dan foydalanib o'z kuzatuv kameramizni yasashni o'rganamiz. Siz ushbu oqimga RPi bir xil tarmoqqa ulangan ekan, istalgan qurilma yordamida kirishingiz mumkin
Ko'rsatmalar va ko'rsatmalarni qanday o'tkazish kerak: 8 qadam
Ko'rsatmalar va ko'rsatmalarni qanday o'tkazish kerak: Bu ko'rsatmalarni ko'rsatish va aytib berish bo'yicha qo'llanma. Bu asosan 2007 yil 9 -mart, juma kuni Instructables -da o'tkazilgan tadbirga, shuningdek, ushbu tadbirning avvalgi mujassamlanishiga, Squid Labs yorug'lik salonlariga asoslangan. Shou va Telning maqsadi
Eshitish vositasi porti yordamida ekvalayzer futbolkasini qanday o'zgartirish kerak: 6 qadam
Eshitish vositasi porti yordamida ekvalayzer futbolkasini qanday o'zgartirish mumkin: Ekvalayzerlari bo'lgan futbolkalar, albatta, ajoyib, lekin mikrofonlarning quvvati past bo'ladi va iPodni ularga ulashning iloji yo'q. Bu mod ikkala muammoni ham bir necha dollarga hal qiladi - bu ulardan birini ishlatishga imkon beradi: 1. Th
Eshitish vositasi porti yordamida ekvalayzer futbolkasini qanday o'zgartirish kerak: 2: 6 qadam
Eshitish vositasi porti yordamida ekvalayzer futbolkasini qanday o'zgartirish mumkin: 2: Bu ko'rsatma asosan mening asl T-Qualizer ko'rsatmasimga o'xshaydi, lekin men yo'lda bilib olgan bir nechta qo'shimcha eslatmalar bilan. Shunday qilib, biz boshlaymiz: Ekvalayzerlari bo'lgan futbolkalar, albatta, ajoyib, lekin mikrofonlarning kuchi past bo'ladi,
Qanday qilib eski chiroqni LED rejimiga o'tkazish kerak: 4 qadam
Qanday qilib eski va eski chiroqni LED -ga o'rnatish kerak: men bu klassik chiroqni yangi LED chiroqqa qanday o'zgartirish kerakligini ko'rsataman. Asosan eski lampochkani bir nechta LEDlar bilan almashtirish