Zapisz jako PDF

Transkrypt

Zapisz jako PDF
Analiza_sygnałów_-_ćwiczenia/AR_1
Spis treści
1 Funkcja autokorelacji
1.1 Funkcja korelacji wzajemnej
1.2 Zadanie: Jak obliczyć funkcję autokorelacji?
1.3 Zadanie: Funkcja auokorelacji funkcji okresowej
1.4 Zadanie: Funkcja auokorelacji białego szumuj
2 Co musimy z tego zapamiętać
Funkcja autokorelacji
Funkcja korelacji wzajemnej
Dla sygnału
możemy badać jak jest on do siebie podobny dla przesunięciaczasowego :
Zwróćmy uwagę na związek funkcji korelacji:
z iloczynem skalarnym wektorów
ze splotem.
i jego przesuniętej wersji
Dla skończonych dyskretnych sygnałów mamy estymatory korelacji:
oraz kowariancji:
Funkcję
można estymować z jednej realizacji procesu (zakładamy jego ergodyczność):
Zadanie: Jak obliczyć funkcję autokorelacji?
W pythonie mamy wydajną implementację funkcji autokorelacji (tak naprawdę to funkcji korelacji
wzajemnej, której szczególnym przypadkiem jest autokorelacja) w: numpy.correlate. Zanim jednak
przejdziemy do rutynowego korzystania z tej funkcji warto sobie wyrobić pewną intuicję co do jej
działania. Możemy sobie to działanie wyobrazić tak, że tworzymy dwie kopie naszego sygnału
wydłużone zerami. jedna kopia ma oryginalny sygnał po środku, a w drugiej będzie on stopniowo
przesuwany od pozycji takiej w której z nieruchomą kopią ma jeden punkt wspólny z lewej stron do
takiej, kiedy ma jeden punkt wspólny z prawej strony. W każdym położeniu wzajemnym sygnałów
musimy policzyć ich iloczyn skalarny. Poniższy kod pomoże nam to zilustrować:
import numpy as np
import pylab as py
# Niech nasz sygnał będzie:
x = np.array([1,2,3,2,1])
# Ma on długość
N = ...
# przygotujmy miejsce na kopie sygnału
# najpierw kopia nieruchoma na środku
x_2 = np.zeros(3*N-2, dtype = 'int')
x_2[...] = x
print('liczymy f. autokorelacji sygnału x= ',x)
for k in range(-N,N-1):
print(' ')
x_1 = np.zeros(3*N-2, dtype = 'int')
x_1[...]=x # to jest kopia sygnału x cofnięta o k próbek w stosunku do
nieruchomej kopii
print('x1: \t'+str(x_1))
print('x2: \t'+str(x_2))
print(40*'-')
print('x1*x2\t', x_1*x_2)
f_corr[k+N] = ...
print('f_corr(',k+1,') = \t',...)
# porównajmy wynik z wywołaniem funkcji bibliotecznej:
...
Zadanie: Funkcja auokorelacji funkcji okresowej
Funkcja okresowa jest do siebie podobna po przesunięciu o cały okres.
Jak zatem wygląda funkcja autokorelacji fragmentu funkcji sinus?
Jak zmienia się ta funkcja wraz z długością fragmentu sygnału?
import numpy as np
import pylab as py
Fs = 100
dt = 1/Fs
f = 10
T = 0.2
t = np.arange(,T,dt)
s = np.sin(2*np.pi*f*t)
f_corr = ...# pełna wersja funkcji autokorelacji - za pomoca funkcji
bibliotecznej
tau =...# wektor przesunięć wzajemnych - powinien mieć 0 na środku
py.subplot(2,1,1)
py.stem(t,s)
py.subplot(2,1,2)
py.stem(tau,f_corr)
py.show()
Zadanie: Funkcja auokorelacji białego szumuj
Analogicznie do zadania powyżej proszę zapoznać się z funknją autokorelacji dla białego szumu. Dla
ustalenia uwagi niech to będą niezależne próbki z rozkładu N(0,1).
Co musimy z tego zapamiętać
Jak liczymy funkcję autokorelacji?
Jak wygląda funkcja autokorelacji dla funkcji okresowej, a jak dla szumu?
To, że dla sygnałów deterministycznych możemy obliczyć funkcję autokorelacji, zaś dla
procesów stochastycznych, które znamy jedynie na podstawie danych, musimy ją estymować.
Analiza_sygnałów_-_ćwiczenia/AR_1