6-bob
Diskret kosinus transformatsiyasi
3. Tahlil muammosini ko'rib chiqamiz: signal va chastotalar to'plami berilgan bo'lsa, har
bir chastota komponentining amplitudasini qanday topish mumkin?
Ushbu bobning mavzusi musiqani siqish uchun MP3 va tegishli formatlarda qo'llaniladigan
Diskret Kosinus Transformatsiyasi (DCT); JPEG va rasmlar uchun shunga o'xshash
formatlar; va video uchun MPEG formatlar oilasi.
2. Keyin NumPy massivlari yordamida sintez masalasini qayta yozamiz. Ushbu harakat
ishlash
uchun yaxshi, shuningdek, keyingi qadam uchun tushuncha beradi.
Ushbu bobning kodi ushbu kitobning omborida joylashgan chap06.ipynb da (0.2-bo'limga
qarang). Siz uni http://tinyurl.com/ thinkdsp06 saytida ham ko'rishingiz mumkin.
1. Sintez masalasidan boshlaymiz: chastota komponentlari va ularning amplitudalari
to‘plamini
hisobga olsak, qanday qilib to‘lqinni qurishimiz mumkin?
4. Nihoyat, yanada samaraliroq algoritm topish uchun chiziqli algebraning ba’zi
tamoyillaridan foydalanamiz. Agar siz allaqachon chiziqli algebrani bilsangiz, bu juda
yaxshi, lekin men sizga nima kerakligini tushuntirib beraman.
Mana, u erga borish uchun qadamlar:
Biz
kontseptual jihatdan sodda, ammo sekin yechim bilan boshlaymiz.
DCT ko'p jihatdan biz spektral tahlil uchun foydalanayotgan Discrete Furier Transform (DFT)
ga o'xshaydi. DCT qanday ishlashini bilib olsak, DFTni tushuntirish osonroq bo'ladi.
Machine Translated by Google
komponentlar - har bir amplituda-chastota juftligi uchun bittadan CosSignal ob'ektlar
ro'yxati. SumSignal bu chastota komponentlarining yig'indisini ifodalaydi.
Sintezni yozishning yana bir usuli:
amper - amplitudalar ro'yxati, fs - chastotalar ro'yxati va ts
- signalni baholash kerak
bo'lgan vaqtlar ketma-ketligi.
ys = signal.evaluate(ts) qaytish
ys
Konseptual jihatdan sintez juda oddiy. Ammo bu shaklda
tahlil qilishda ko'p
yordam
bermaydi , bu teskari muammo: to'lqinni hisobga olgan holda, biz chastota
komponentlarini va ularning amplitudalarini qanday aniqlashimiz mumkin?
Ushbu misol 100 Gts da asosiy chastotani va uchta harmonikani (100 Gts keskin G2)
o'z ichiga olgan signalni yaratadi. U signalni bir soniya davomida soniyasiga 11 025
kadr tezlikda beradi va natijalarni To'lqin ob'ektiga joylashtiradi.
Thinkdsp modulidagi ob'ektlardan foydalanib, sintez deb ataladigan
ushbu operatsiyani
bajarishning oddiy usuli mavjud : def synthesize1(amper, fs, ts): komponentlar =
[thinkdsp.CosSignal(freq, amp) amp, freq in zip() amper, fs)] signal =
thinkdsp.SumSignal(*komponentlar)
ts = np.linspace(0, 1, kadr tezligi) ys =
sintez1(amper, fs, ts) to‘lqin =
Thinkdsp.Wave(ys, kadr tezligi)
Aytaylik, men sizga amplitudalar ro'yxatini va chastotalar ro'yxatini beraman va sizdan
ushbu chastota komponentlarining yig'indisi bo'lgan signalni qurishingizni so'rayman.
kadr tezligi = 11025
amper = np.array([0,6, 0,25, 0,1, 0,05]) fs = [100,
200, 300, 400]
Do'stlaringiz bilan baham: