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