Zapisz jako PDF

Transkrypt

Zapisz jako PDF
Analiza_sygnałów_-_ćwiczenia/Fourier_2
Spis treści
1 Odwracalność transformaty
1.1 Zadanie 1
2 Badanie rozdzielczości sygnałami testowymi
2.1 Widmo sinusoidy i delty
2.1.1 Zadanie 2
2.1.2 Zadanie 3
2.1.3 Efekt nieciągłości funkcji
2.1.3.1 Zadanie 4
2.1.4 Długość sygnału a rozdzielczość widma FFT
2.1.4.1 Przedłużanie sygnału
2.1.4.1.1 Przedłużanie przez cykliczne powielenie
2.1.4.1.2 Przedłużanie zerami
3 Co musimy z tego zapamiętać?
Odwracalność transformaty
Reprezentacja sygnałów w dziedzinie częstości jest dualna do reprezentacji w dziedzinie czasu. To
znaczy, że jedną reprezentację można przekształcić w drugą. Do przejścia z dziedziny czasu do
częstości używaliśmy transformaty Fouriera (zaimplemantowanej w fft). Przejścia z dziedziny
częstości do czasu dokonujemy przy pomocy odwrotnej transformaty Fouriera (zaimplementowanej
jako ifft. Mając (zespolone) współczynniki w dziedzinie częstości dla pewnego sygnału, możemy
odzyskać jego przebieg czasowy.
Zadanie 1
Proszę wygenerować sygnał
o długości 2,5 s
próbkowany 100 Hz, obliczyć jego transformatę Fouriera za pomocą fft, a następnie
zrekonstruować przebieg czasowy za pomocą ifft. Sygnał oryginalny i zrekonstruowany
wykreślić na jednym rysunku. Uwaga: funkcja ifft zwraca wektor liczb zespolonych. Sprawdź
jaka jest jegeo część urojona. Na wykresie rekonstrukcji przedstaw jego część rzeczywistą.
Badanie rozdzielczości sygnałami testowymi
Poniżej będziemy zajmować się sygnałami rzeczywistymi, więc stosujemy funkcje z rodziny
Real FFT:
https://docs.scipy.org/doc/numpy/reference/routines.fft.html
W poniższych przykładach jako widmo będziemy rozumieli widmo amplitudowe, tzn wartość
bezwzględną ze współczynników szeregu Fouriera.
Widmo sinusoidy i delty
Najprostsza sytuacja: Badamy współczynniki zwracane przez fft dla sinusoid o różnych
częstościach.
Zadanie 2
Proszę kolejno wygenerować sinusoidy o długości 1s próbkowaną 32Hz i częstościach 1,10, 16
i 0 Hz. Dla tych sinusoid proszę policzyć transformaty Fouriera i wykreślić zarówno sygnały jak
i wartość bezwzględne otrzymanych współczynników.
Jak wyglądają otrzymane wykresy?
Czy coś szczególnego dzieje się dla częstości 0 i 16Hz? Czy w tych skrajnych
przypadkach faza sygnału ma wpływ na wynik transformaty?
Zadanie 3
Proszę wygenerować sygnał delta położony w sekundzie 0,5 na odcinku czasu o długości 1s
próbkowany 128Hz. Dla takiego sygnału proszę policzyć transformatę Fouriera i wykreślić
zarówno sygnały jak i wartość bezwzględne otrzymanych współczynników.
Jak wygląda transformata funkcji delta?
Jakie częstości w sobie zawiera?
Efekt nieciągłości funkcji
Zadanie 4
Wygenerować sinusoidę o następujących własnościach: f=10 Hz, T=1, Fs=100 Hz, i fazie = 1;
Przy pomocy subplotów proszę sporządzić rysunek zgodnie z ponższym opisem:
subplot(2,2,1): przebieg sygnału w czasie
subplot(2,2,2): moduł jego transformaty Fouriera (narysować za pomocą funkcji
py.stem wraz zprawidłową osią częstości,
subplot(2,2,3): Proszę wykreślić trzykrotnie periodycznie powielony oryginalny sygnał.
Można go skonstruować wywołując funkcję: s_period =
np.concatenate((s,s,s)).
subplot(2,2,4): moduł transformaty Fouriera s_period (narysować za pomocą funkcji
py.stem wraz zprawidłową osią częstości
Powtórz te same kroki dla sinusa o częstości 10.3 Hz.
Pytania:
1. Czym różnią się przedłużenia sinusoidy 10 Hz od sinusoidy 10.3 Hz? Proszę zwrócić uwagę na
miejsca sklejania sygnałów.
2. Skąd bierze się widoczna różnica w widmie sinusoidy 10 Hz i 10.3 Hz?
Długość sygnału a rozdzielczość widma FFT
Z dotychczasowych rozważań o transformacie Fouriera ograniczonych w czasie sygnałów
dyskretnych wynika, że w widmie reprezentowane są częstości od
do
gdzie
to częstości
Nyquista. Dostępnych binów częstości jest N - tyle samo ile obserwowanych punktów sygnału.
jaki dostęp między binami częstotliwości mamy dla 1 s sygnału próbkowanego 10Hz?
jaki dostęp między binami częstotliwości mamy dla 1 s sygnału próbkowanego 100Hz?
jaki dostęp między binami częstotliwości mamy dla 1 s sygnału próbkowanego 1000Hz?
jaki dostęp między binami częstotliwości mamy dla 10 s sygnału próbkowanego 10Hz?
jaki dostęp między binami częstotliwości mamy dla 100 s sygnału próbkowanego 10Hz?
Zatem zwiększenie długości sygnału w czasie poprawia "rozdzielczość" reprezentacji
częstotliwościowej sygnału.
Załóżmy, że dysponujemy jedynie sekwencją N próbek pewnego sygnału. Rozważymy teraz jakie
można przyjąć strategie przedłużania tego sygnału w celu zwiększenia gęstości binów
częstotliwościowych i jakie te strategie mają konsekwencje.
Przedłużanie sygnału
Przedłużanie przez cykliczne powielenie
Zobaczmy co się stanie jesli przedłużymy sygnał prze jego periodyczne przedłużenie. Efekty takiego
przedłużania proszę zbadać przy użyciu poniższego kodu:
# -*- coding: utf-8 -*import pylab as py
import numpy as np
from numpy.fft import rfft, rfftfreq
def sin(f = 1, T = 1, Fs = 128, phi = ):
'''sin o zadanej częstości (w Hz), długości, fazie i częstości
próbkowania
Domyślnie wytwarzany jest sygnał reprezentujący
1 sekundę sinusa o częstości 1Hz i zerowej fazie próbkowanego 128 Hz
'''
dt = 1.0/Fs
t = np.arange(,T,dt)
s = np.sin(2*np.pi*f*t + phi)
return (s,t)
Fs =100
T =0.1
(s,t) = sin(f = 10.0, T=T, Fs=Fs)
py.figure()
py.subplot(2,2,1)
py.plot(t,s)
py.subplot(2,2,2)
S = rfft(s)/len(s)
F = rfftfreq(len(s),1/Fs)
py.stem(F,np.abs(S))
z= np.zeros(len(s))
py.subplot(2,2,3)
n = 10
s_period = np.hstack(n*(s,))# n razy powtarzamy s
t_period = np.arange(,T*n,1/Fs)
py.plot(t_period,s_period)
py.subplot(2,2,4)
S_period = rfft(s_period)/len(s)
F_period = rfftfreq(len(s_period),1/Fs)
py.stem(F_period,np.abs(S_period)/(len(s_period)))
py.stem(F,np.abs(S),linefmt='r-', markerfmt='ro')
py.show()
Przedłużanie zerami
Metodą na zwiększanie ilości binów w transformacie Fouriera jest przedłużanie sygnału zerami
(zero-padding). Jest to szczególny przypadek następującego podejścia: Nasz "prawdziwy" sygnał jest
długi. Oglądamy go przez prostokątne okno, które ma wartość 1 na odcinku czasu, dla którego
próbki mamy dostępne i 0 dla pozostałego czasu (więcej o różnych oknach będzie na kolejnych
zajęciach). W efekcie możemy myśleć, że oglądany przez nas sygnał to efekt przemnożenia
"prawdziwego" sygnału przez okno. Efekty takiego przedłużania proszę zbadać:
dla sygnału sinusoidalnego o dł. 0.1s i częstości 10Hz próbkowanego 100 Hz
dla sygnału sinusoidalnego o dł. 0.1s i częstości 22Hz próbkowanego 100 Hz
dla sygnału będącego suma dwóch powyższych
Jak można zinterpretować wyniki tego eksperymentu w świetle twierdzenia o splocie?
Co musimy z tego zapamiętać?
Sygnał może być reprezentowany w dziedzine czasu lub w dziedzinie częstości
Jak wyglada widmo delty?
Jak wygląda widmo sinusa, którego całkowita ilość okresów mieści się w badanym fragmencie,
a jak jeśli niecałkowita?
Jak długość sygnału wpływa na rozdzielczość widma?
Jakie częstości występują w widmie sygnału periodyzowanego cyklicznie?
Jaki efekt daje przedłużanie zerami?
Analiza_sygnałów_-_ćwiczenia/Fourier_2