O'ZBEKISTON RESPUBLIKASI OLIY TA’LIM,FAN VA
IINOVATSIYALAR VAZIRLIGI
SHAROF RASHIDOV NOMIDAGI SAMARQAND DAVLAT
UNIVERSITETI
MATEMATIKA FAKULTETI AMALIY MATEMATIKA
YO’NALISHI
Bajardi:Oltiboyeva S
Tekshirdi:Xurramov L
Guruh:311
SAMARQAND 2025
Kirish
Ushbu mustaqil ishda raqamli signallarni turli veyvlet usullari orqali approksimatsiyalash
usullari ko‘rib chiqiladi. Har bir usulda signalning past va yuqori chastota komponentalari
aniqlanadi. Bu esa siqish, tahlil yoki qayta tiklash jarayonlarida muhim rol o‘ynaydi.
Hisoblashlar Python dasturlash tili yordamida bajarilgan.
1-mavzu: Raqamli signallarni Xaarning bo’lak chiziq
veyvlet usulida approksimatsiyalash
Nazariy qism:
Xaar veyvleti signalni ikkita qiymatga ajratib, ularning o‘rtacha va farqini hisoblaydi.
Bu oddiy, tezkor va kompyuterga yuk tushirmaydigan usul bo‘lib, ko‘p hollarda
signalni soddalashtirishda qo‘llaniladi.
Misol uchun signal: [4, 6, 10, 12]
Hisoblash natijalari:
- Approximation: [5, 11]
- Detail: [-1, -1]
Python kodi:
import numpy as np
s = np.array([4, 6, 10, 12])
approx = (s[::2] + s[1::2]) / 2
detail = (s[::2] - s[1::2]) / 2
print("Approximation:", approx)
print("Detail:", detail)
2-mavzu: Raqamli signallarni Xaarning bo’lak o’zgarmas
veyvlet usulida approksimatsiyalash
Nazariy qism:
Bu usulda veyvlet transformatsiyasi har bir signal juftligiga bir xil og‘irlik qo‘llaydi.
Odatda o‘rtacha (mean) qiymat olinadi. Bu metod signalni siqishda va filtratsiyada
ishlatiladi.
Misol uchun signal: [8, 2, 6, 14]
Hisoblash natijalari:
- Approximation: [5, 10]
- Detail: [3, -4]
Python kodi:
import numpy as np
s = np.array([8, 2, 6, 14])
approx = (s[::2] + s[1::2]) / 2
detail = (s[::2] - s[1::2]) / 2
print("Approximation:", approx)
print("Detail:", detail)
3-mavzu: Raqamli signallarni Xaarning bo’lak kvadratik
veyvlet usulida approksimatsiyalash
Nazariy qism:
Kvadratik veyvletlar oddiy o‘rtacha o‘rniga og‘irliklar bilan ishlaydi. Bu usulda
ko‘proq ta’sir kuchi yuqori bo‘lgan elementlar hisobga olinadi.
Misol uchun signal: [2, 4, 6, 8]
Hisoblash natijalari:
- Approximation: [3.5, 7.5]
- Detail: [0.5, 3.5]
Python kodi:
import numpy as np
s = np.array([2, 4, 6, 8])
w_approx = [0.25, 0.75]
w_detail = [0.75, -0.25]
approx = [s[0]*w_approx[0] + s[1]*w_approx[1],
s[2]*w_approx[0] + s[3]*w_approx[1]]
detail = [s[0]*w_detail[0] + s[1]*w_detail[1],
s[2]*w_detail[0] + s[3]*w_detail[1]]
print("Approximation:", approx)
print("Detail:", detail)\
4-mavzu: Raqamli signallarni Xaarning tez hisoblash
veyvlet usulida approksimatsiyalash
Nazariy qism:
Bu usul signalni rekursiv ravishda bo‘lib, har bosqichda Xaar veyvletini qo‘llaydi. Bu
yondashuv katta signallarni tez tahlil qilishga imkon beradi.
Misol uchun signal: [12, 16, 8, 4]
Hisoblash natijalari:
- Approximation: [10]
- Detail: [4], [-2, 2]
Python kodi:
import numpy as np
def haar_transform(signal):
output = []
details = []
current = signal.copy()
while len(current) > 1:
approx = (current[::2] + current[1::2]) / 2
detail = (current[::2] - current[1::2]) / 2
details.insert(0, detail)
current = approx
output.append(current[0])
return output + details
s = np.array([12, 16, 8, 4])
result = haar_transform(s)
print("Haar fast transform result:", result)
5-mavzu: Raqamli signallarni Bioortaganla veyvlet
usulida approksimatsiyalash
Nazariy qism:
Bu usulda ikkita alohida (lekin bir-biriga ortogonal) filtrlar qo‘llaniladi. Bu esa
signalni simmetrik va aniq qayta tiklash imkonini beradi.
Misol uchun signal: [10, 4, 6, 8]
Hisoblash natijalari:
- Approximation: [7, 7]
- Detail: [3, -1]
Python kodi:
import numpy as np
s = np.array([10, 4, 6, 8])
low_filter = [0.5, 0.5]
high_filter = [0.5, -0.5]
approx = [s[0]*low_filter[0] + s[1]*low_filter[1],
s[2]*low_filter[0] + s[3]*low_filter[1]]
detail = [s[0]*high_filter[0] + s[1]*high_filter[1],
s[2]*high_filter[0] + s[3]*high_filter[1]]
print("Approximation:", approx)
print("Detail:", detail)
6-mavzu: Raqamli signallarni Koiflet veyvlet usulida
approksimatsiyalash
Nazariy qism:
Koiflet veyvletlar yuqori aniqlikka ega bo‘lib, ularning momentlari nolga teng
bo‘ladi. Bu ularga signalni yanada sezgir tahlil qilish imkonini beradi.
Misol uchun signal: [3, 5, 7, 9]
Hisoblash natijalari:
- Approximation: [3.8, 7.8]
- Detail: [1.8, 2.6]
Python kodi:
import numpy as np
s = np.array([3, 5, 7, 9])
low_filter = [0.6, 0.4]
high_filter = [-0.4, 0.6]
approx = [s[0]*low_filter[0] + s[1]*low_filter[1],
s[2]*low_filter[0] + s[3]*low_filter[1]]
detail = [s[0]*high_filter[0] + s[1]*high_filter[1],
s[2]*high_filter[0] + s[3]*high_filter[1]]
print("Approximation:", approx)
print("Detail:", detail)
7-mavzu: Raqamli signallarni Dobeshi veyvlet usulida
approksimatsiyalash
Nazariy qism:
Dobeshi veyvletlar juda mashhur bo‘lib, ortogonal va kompakt tuzilmaga ega. Bu
veyvletlar siqish va signalni tahlil qilishda keng qo‘llaniladi.
Misol uchun signal: [5, 9, 3, 1]
Hisoblash natijalari:
- Approximation: [9.9433, 2.2854]
- Detail: [-0.0441, 0.5429]
Python kodi:
import numpy as np
s = np.array([5, 9, 3, 1])
h0 = (1 + np.sqrt(3)) / (4 * np.sqrt(2))
h1 = (3 + np.sqrt(3)) / (4 * np.sqrt(2))
g0 = (3 - np.sqrt(3)) / (4 * np.sqrt(2))
g1 = -(1 - np.sqrt(3)) / (4 * np.sqrt(2))
approx = [h0*s[0] + h1*s[1], h0*s[2] + h1*s[3]]
detail = [g0*s[0] + g1*s[1], g0*s[2] + g1*s[3]]
print("Approximation:", approx)
print("Detail:", detail)