13-Laboratoriya
Mavzu:Matlab dasturida ilova yaratish
Ishdan maqsad: Matlab dasturida avvalgi darslar davomida egallangan bilimlar asosida
ilova yaratish.
Bugungi darsimiz DSP algoritmlarini amalga oshirishga bag'ishlanadi va avval audio
fayllarni qayta ishlash uchun grafik dastur yaratish jarayonini ko'rib chiqamiz. Men turli xil
o'tkazuvchanlik chegaralari bilan past chastotali filtrlar to'plamini loyihalashtirishga harakat
qilmoqchiman va ular o'rtasida audio o'tkazishda almashish imkoniyatiga ega bo'laman. Boshlash
uchun biz 8 ta past chastotali FILTER DESIGNER dasturini ishlab chiqamiz.
Men oltmish uchga teng filtrlarning tartibini tanlayman, ya'ni 64 koeffitsientlar to'plamini
olaman, ularni ish maydonida hozircha sonli vektorlar sifatida saqlayman. Buni sakkiz marta
bajarganimdan so'ng, men 8 ta koeffitsientni olaman. Darhaqiqat, turli koeffitsientlar to'plamlari
bizga turli xil chastotali javoblarni berishini hisobga olsak, biz 8 ta filtr tuzilishini halol ravishda
amalga oshirishga hojat yo'q. Biz uchun bitta tuzilma etarli, biz kerakli to'plamni o'z xohishimiz
bilan almashtiramiz. Filtrning javoblari faqat eng past chastotalarning deyarli butun spektrga o'tish
imkoniyatidan tortib, namuna olish tezligi 44,1 kiloherts.
Endi bizda 8 ta sonli vektor mavjud bo'lib, ularni bitta o'zgaruvchan, ya'ni matritsa sifatida
saqlash qulay. Vertikal biriktirishni amalga oshiraylik, ya'ni qatorlarni birlashtiramiz va
o'zgaruvchimiz num.mat bir xil nomdagi fayl sifatida qattiq diskka saqlaymiz.
Va shuningdek, test audio fayllari va skriptni asosiy algoritm bilan katalogga nusxalash.
Ssenariy tizim ob'ektlari yordamida audio uzatmoqda. Bizga tanish bo'lgan o'qish va tarqatish
moslamalaridan tashqari, biz koeffitsientlar uchun kirish porti bo'lgan nosimmetrik FIR filtri
ob'ektini ishga tushiramiz.
Biz matritsadan koeffitsientlar to'plamini tanlaymiz, joriy filtrning chastota ta'sirini
chizamiz, shuningdek koeffitsientlarni tsiklning har bir bosqichida moslamalarni filtrlashga
o'tkazamiz. Keling, ettinchi filtrning ishlashini tekshirib ko'raylik. Endi ikkinchi koeffitsientlar
to'plamini o'rnatamiz. Algoritmning ishlashini tekshirdik, dastur yaratishni boshlashimiz mumkin.
Biz APP DESIGNER-da grafik interfeysni ishlab chiqamiz. Keling, yangi dastur yaratib, uni
darhol TONE_APP noyob nomi bilan saqlaymiz va endi grafik vositalarni forma ustiga
joylashtiramiz. Bizga chastotalar ta'sirini chizish, barcha yorliqlarni olib tashlash va panjara
qo'shish uchun o'qlar kerak. Eksa bo'ylab chegaralarni qo'lda o'rnating. Bundan tashqari, ijro etish
va yuklashni boshqarish uchun tugmachalarga ega bo'lish foydalidir. Bizda to'rtta tugma bo'ladi -
bular LOAD, PLAY, PAUSE va STOP tugmalari, shunchaki ularni ko'paytiring va nomini
o'zgartiring.
Va filtrni tanlash uchun DISCRETE KNOB kalitlarini o'rnating, uni TONE deb nomlang
va qanday diskret qiymatlarni qabul qilishi mumkinligini ko'rsating. Bu birdan sakkizgacha
raqamlar bo'ladi. Biz dastlabki qiymatni ko'rsatamiz 8. Tashqi ko'rinish tayyor, siz kodga
o'tishingiz mumkin. Ilova bu erda xususiyatlari deb nomlangan o'zgaruvchi orqali ma'lumotlarni
almashadi.
Ilova ichida foydalanadigan o'zgaruvchilar xususiyatlarining nomlarini yozamiz. Va keyin
biz birinchi CALLBACK-ni, ya'ni ba'zi harakatlar yoki hodisalar tomonidan bajariladigan
buyruqlar to'plamini yaratamiz. Birinchidan, biz STARTUPFCN dasturi ishga tushirilganda nima
bo'lishini ko'rsatamiz va filtr matritsasi yuklanadi. Funktsiyalar o'rtasida o'zgaruvchilar qiymatini
almashtirish uchun boshida App so'zlarini qo'shing.
Ishga tushirish paytida biz shuningdek, barcha tizim ob'ektlarini ishga tushirishni,
skriptdan hamma narsani nusxalashni, nomini o'zgartirishni xohlaymiz, lekin parametrlarni
o'zgartirmaymiz, sukut bo'yicha 100 ta hisobotning FUNKY-GUITAR fayli o'qilsin. Xo'sh,
bundan keyin biz tugmachalarni bosish uchun CALLBACK yaratishni boshlaymiz. Va bizning
faylni yuklab olishimiz uchun birinchi tugma - bu yuklash tugmasi. Keling, uni CALLBACK-ga
qo'shaylik. Bizda skriptda bunday funktsiya bo'lmagan, shuning uchun biz o'zimiz UIGETFILE
funktsiyasini yozamiz. Bu bizda, O'QUVCHI ob'ekti o'qishi mumkin bo'lgan mp3, wav yoki
boshqa audio fayllarni tanlaydigan dialog oynasini ochadi. Bu erda biz tanlangan papkaga qidiruv
yo'lidagi
fayl
bilan
qo'shishimiz
kerak,
aks
holda
keyinchalik
xatolar
bo'ladi.
AUDIOFILEREADER-ni qayta ishga tushirishimiz kerak. Bu safar tanlangan fayl nomi bilan,
shuning uchun biz bu erda hamma narsani FILE bilan almashtiramiz.
Bundan tashqari, men faylni o'zim to'xtatguncha cheksiz o'ynashini xohlayman, shuning
uchun biz PLAYCOUNT parametrini qo'shamiz va uning qiymatini cheksizga o'rnatamiz, ya'ni
INF. PLAY tugmasini bosish orqali biz ushbu dasturni ishga tushiramiz, shuning uchun
PLAYBUTTON-ga CALLBACK qo'shamiz. Bu erda biz faqat WHILE asosiy tsiklimizni
skriptdan nusxa ko'chiramiz va u erda o'zgarmaydigan nomlarini tuzatamiz. Ammo bu erda,
tsikldan chiqish uchun yana bir mantiqiy o'zgaruvchiga, ya'ni to'xtash bayrog'iga ehtiyoj bor.
Birinchidan, biz buni XUSUSIY XUSUSIYATIMIZDA STOP FLAG-ni aytib beramiz va shunga
ko'ra, agar u rost bo'lsa, PLAY tugmasi bosilganda tsikldan chiqishda, har doim yolg'on bo'lishi
kerak degan shartni yozamiz. Shaklni yangilash uchun DRAWN HOZIR sehrli so'zini
qo'shishimiz kerak va barcha CALLBACKlar tsikldan chiqolmaydi.
Ammo hozircha biz hech qanday koeffitsientlarni tanlamayapmiz. Biz kalit raqamidan
chiziq raqamini tanlashni xohladik, shuning uchun uning qiymatini o'zgartirish uchun
CALLBACK qo'shamiz. Biz qiymatni num o'zgaruvchisiga yozamiz, ammo u faqat mag'lubiyat
ma'lumotlar turida saqlanadi va raqamga o'tkazilishi kerak va bu raqam bizning NUM.MAT
matritsamiz uchun qator ko'rsatkichi bo'ladi. Shuningdek, chastotaga javob chizmasini shu erga
qo'shamiz. Biz buni skriptdan nusxa ko'chirish orqali amalga oshiramiz, ammo bu erda PLOT
funktsiyasiga diagrammani qaysi o'qlarga joylashtirish kerakligini aniq ko'rsatishimiz kerak. Bizda
faqat o'qlar UIAXES. Ilova ishga tushirilganda hammasi bir xil bo'ladi, shuning uchun biz ushbu
qatorlarni STARTUPFCN-ga qo'shamiz. Biz bilan pauza qilish va to'xtash uchun CALLBACK
qoldi. Pauza qilinganida, shunchaki to'xtash bayrog'ini TRUE-ga qo'ying. Va boshlaymiz va
bundan tashqari biz tizimimiz ob'ektlarining qiymatini tiklaymiz, ya'ni ob'ektlarimizni ijro
faylining boshiga qaytaramiz. Xo'sh, kodni tahlil qilish shuni ko'rsatadiki, biron bir narsa noto'g'ri,
biz F o'zgaruvchisidan foydalanmayapmiz, men uni PLOT buyrug'idan tasodifan o'chirib
tashladim, shuning uchun uni qaytaraman.
Endi barchamiz dasturlarni ishga tushirishga usta bo'ldik. Pauza ishlaydi. Shuningdek,
shunga muvofiq to'xtating. Endi [musiqa] faylini yuklab olishni tekshirib ko'raylik. Biz matlab-da
DSP algoritmlari uchun grafik foydalanuvchi interfeysini yaratish jarayonini ko'rib chiqdik.
Do'stlaringiz bilan baham: |