Co robi FFT w MATLABie?

Co Robi Fft W Matlabie



The Szybka transformata Fouriera (FFT) odnosi się do wysoce zoptymalizowanej wersji Dyskretna transformata Fouriera (DFT) który przekształca sygnały dyskretne w dziedzinie czasu do dziedziny częstotliwości. Zawartość częstotliwości, fazę i inne aspekty sygnału można obserwować za pomocą FFT obliczenia.

Ten artykuł nauczy nas o działaniu FFT w MATLABIE.

Zrozumienie FFT

The Szybka transformata Fouriera (FFT) reprezentuje specjalną technikę, która pomaga nam inaczej rozumieć sygnały. Zwykle sygnały są przedstawiane jako sekwencje liczb, które zmieniają się w czasie, ale z FFT, możemy zobaczyć, jakie różne częstotliwości są obecne w sygnale i jak silne są. To tak, jakby podzielić sygnał na nuty i zobaczyć, jak głośna jest każda nuta.







The FFT Algorytm wykonuje wiele skomplikowanych obliczeń matematycznych na danych sygnału. Bierze sygnał i dzieli go na mniejsze części, a następnie oblicza częstotliwości i ich moce dla każdej części. Na koniec łączy wszystkie wyniki, aby dać nam obraz zawartości częstotliwości sygnału, zależności fazowych i innych ważnych cech.



Ta technika jest używana w wielu dziedzinach, ponieważ pomaga nam lepiej analizować i rozumieć sygnały. Na przykład w przetwarzanie sygnałów , możemy użyć FFT odfiltrować niechciany szum lub wykryć określone wzorce. W analiza dźwięku , możemy zidentyfikować różne dźwięki lub przeanalizować jakość nagrania audio. W przetwarzanie obrazu , FFT może pomóc nam w analizie częstotliwości przestrzennych obrazu. A w telekomunikacji FFT służy do efektywnego nadawania i odbierania sygnałów.



Jak korzystać z FFT w MATLABie

MATLAB udostępnia wbudowaną funkcję o nazwie fft który pozwala nam działać Szybka transformata Fouriera (FFT) obliczenia na sygnałach. Ta funkcja jest łatwa w użyciu i oferuje różne opcje analizy i manipulowania sygnałami w dziedzinie częstotliwości:





Składnia używania FFT funkcje w MATLAB podano poniżej:

fa = fft ( X )

fa = fft ( x, rz )

fa = fft ( x,n,ciemny )

Tutaj:



F= fft(x) daje obliczenie Dyskretna transformata Fouriera (DFT) z x za pomocą Szybka transformata Fouriera (FFT) algorytm.

  • Jeśli x reprezentuje wektor, fft(x) daje transformatę Fouriera wektora.
  • Jeśli x reprezentuje macierz, fft(x) zapewnia transformatę Fouriera każdej kolumny, traktując każdą kolumnę jako wektor.

F = fft(x,n) daje n-punktową DFT. F ma identyczny rozmiar jak x, gdy nie podano żadnej wartości.

  • Jeśli x jest wektorem i jego długość jest mniejsza niż n, x jest uzupełniane końcowymi zerami, aż osiągnie n.
  • Jeśli x jest wektorem, a jego długość przekracza n, jest on obcinany do tej długości n.
  • Jeśli x jest macierzą, każda kolumna jest traktowana jako przypadek wektorowy.

F = fft(x,n,wymiar) daje transformatę Fouriera wzdłuż podanego wymiaru dim. Powiedzmy, fft(x, n, 2) daje n-punktową transformatę Fouriera dla każdego wiersza, jeśli x reprezentuje macierz.

Poniższe przykłady ilustrują działanie FFT funkcja w MATLABIE.

Przykład 1

Możemy użyć FFT w MATLAB, aby zademonstrować generowanie i analizę sygnału z określonymi składowymi częstotliwościowymi i losowym szumem.

Na przykład:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

telewizja = ( 0 :ls- 1 ) *ts;

fa = 0,6 * bez ( 2 * Liczba Pi * pięćdziesiąt *telewizja ) + 3 * Randn ( rozmiar ( telewizja ) ) + bez ( 2 * Liczba Pi * 120 *telewizja ) ;

działka ( 1000 *telewizja ( 1 : pięćdziesiąt ) ,F ( 1 : pięćdziesiąt ) )

xlabel ( „telewizja (ms)” )

yetykieta ( „f (telewizja)” )

tytuł ( „Uszkodzony sygnał o zerowym średnim losowym szumie” )

fa = fft ( F ) ;

PS2 = abs ( F/ ls ) ;

PS1 = PS2 ( 1 : ls / 2 + 1 ) ;

PS1 ( 2 :koniec- 1 ) = 2 *PS1 ( 2 :koniec- 1 ) ;

fa = fs* ( 0 : ( ls / 2 ) ) / ls ;

działka ( f, PS1 )

tytuł ( „Widmo amplitudowe (jednostronne) PS1 dla f(t)” )

xlabel ( 'f(Hz)' )

yetykieta ( '|PS1(f)|' )

Podany kod generuje sygnał o długości ok 2000 próbek (ls) , częstotliwość próbkowania 1500 Hz (fps) i a okres próbkowania (ts) . The wektor czasu (telewizja) jest tworzony na podstawie tych parametrów. Sygnał F składa się z kombinacji składowych sinusoidalnych przy 50 Hz i 120 Hz, wraz z przypadkowym szumem o zerowej średniej. Następnie jest wykreślany z segmentem pierwszych 50 próbek. Kod dodatkowo oblicza FFT sygnału i oblicza widmo amplitudowe (PS1) . Na koniec widmo amplitudy jest wykreślane w funkcji odpowiednich częstotliwości (f) w Hz.

Przykład 2

Oto kolejny przykład, w którym użyto FFT funkcja w MATLAB do transformacji impulsu Gaussa przez dziedzinę czasu do dziedziny częstotliwości.

fs = 500 ;

ts = - 0,5 : 1 /fs: 0,5 ;

ls = długość ( ts ) ;

fa = 1 / ( 4 * kwadrat ( 2 * Liczba Pi * 0,02 ) ) * ( do potęgi ( -ts.^ 2 / ( 2 * 0,02 ) ) ) ;

działka ( ts, f )

xlabel ( „Czas (t)” )

yetykieta ( 'f(t)' )

tytuł ( „Dziedzina czasu” )

np = 2 ^następnapow2 ( ls ) ;

fa = fs* ( 0 : ( np/ 2 ) ) /np;

fa = fft ( f, np ) ;

PF = abs ( F/np ) ;

działka ( f,PF ( 1 :np/ 2 + 1 ) )

xlabel ( '(F)' )

yetykieta ( '|PF(f)|' )

tytuł ( „Dziedzina częstotliwości” )

Dostarczony kod generuje impulsowy sygnał gaussowski w dziedzinie czasu i analizuje jego zawartość częstotliwościową za pomocą Szybka transformata Fouriera (FFT) w MATLABIE. Wykreślany jest sygnał w dziedzinie czasu, a następnie FFT przeprowadza się w celu uzyskania reprezentacji w dziedzinie częstotliwości. Wynikowy widmo amplitudy jest wykreślany w funkcji odpowiednich częstotliwości.

Przykład 3

Poniższy przykład generuje trzy sygnały sinusoidalne o różnych częstotliwościach i wykreśla je w dziedzinie czasu za pomocą FFT funkcja w MATLABIE.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

t = ( 0 :ls- 1 ) *ts;

r1 = bez ( 3 * Liczba Pi * 60 *T ) ;

r2 = bez ( 3 * Liczba Pi * 140 *T ) ;

r3 = bez ( 3 * Liczba Pi * 350 *T ) ;

fa = [ r1; r2; r3 ] ;

Do k = 1 : 3

wątek poboczny ( 3 , 1 , k )

działka ( T ( 1 : 250 ) ,F ( k, 1 : 250 ) )

tytuł ( [ „Rząd nr” , num2str ( k ) , „(Dziedzina czasu)” ] )

koniec

np = 2 ^następnapow2 ( ls ) ;

re = 2 ;

fa = fft ( f,np,d ) ;

PS2 = abs ( F/ ls ) ;

PS1 = PS2 ( :, 1 :np/ 2 + 1 ) ;

PS1 ( :, 2 :koniec- 1 ) = 2 *PS1 ( :, 2 :koniec- 1 ) ;

Do k= 1 : 3

wątek poboczny ( 3 , 1 , k )

działka ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :np/ 2 ) )

tytuł ( [ „Rząd nr” , num2str ( k ) , „(Dziedzina częstotliwości)” ] )

koniec

W powyższym kodzie trzy fale sinusoidalne r1, r2 i r3 są wyświetlane w oknie wyjściowym w dziedzinie czasu. Sygnał w dziedzinie częstotliwości „PS1” jest tworzony za pomocą funkcji FFT dla fal w celu obliczenia każdego z ich indywidualnych widm amplitudy jednostronnej.

Wniosek


The FFT jest cennym narzędziem, które pomaga nam inaczej rozumieć sygnały, analizując ich zawartość częstotliwościową. Z wbudowaną funkcją MATLAB-a, fft, performing FFT obliczenia na sygnałach stają się wygodne. Ta funkcja pozwala nam poznać kluczowe szczegóły dotyczące różnych częstotliwości i względnych natężeń tych częstotliwości poprzez konwersję danych z dziedziny czasu na dziedzinę częstotliwości. Powyższy przewodnik jest kluczowy dla lepszego zrozumienia charakterystyki sygnału i podejmowania świadomych decyzji w różnych zastosowaniach.