Tento článek nás naučí o fungování FFT v MATLABu.
Porozumění FFT
The Rychlá Fourierova transformace (FFT) představuje speciální techniku, která nám pomáhá porozumět signálům jinak. Normálně jsou signály zobrazeny jako sekvence čísel, která se v čase mění, ale s FFT, můžeme vidět, jaké různé frekvence jsou v signálu přítomny a jak jsou silné. Je to jako rozložit signál do jeho not a vidět, jak hlasitá je každá nota.
The FFT Algoritmus dělá s daty signálu spoustu složitých výpočtů. Vezme signál a rozdělí ho na menší části, poté vypočítá frekvence a jejich sílu pro každou část. Nakonec kombinuje všechny výsledky, aby nám poskytl obrázek o frekvenčním obsahu signálu, fázových vztazích a dalších důležitých charakteristikách.
Tato technika se používá v mnoha oblastech, protože nám pomáhá lépe analyzovat a porozumět signálům. Například v zpracování signálu , můžeme použít FFT k odfiltrování nežádoucího šumu nebo detekci specifických vzorů. v audio analýza , můžeme identifikovat různé zvuky nebo analyzovat kvalitu zvukové nahrávky. v zpracování obrazu , FFT nám může pomoci analyzovat prostorové frekvence v obraze. A v telekomunikacích, FFT se používá pro efektivní vysílání a příjem signálů.
Jak používat FFT v MATLABu
MATLAB poskytuje vestavěnou funkci tzv fft což nám umožňuje vystupovat Rychlá Fourierova transformace (FFT) výpočty na signálech. Tato funkce se snadno používá a nabízí různé možnosti pro analýzu a manipulaci se signály ve frekvenční oblasti:
Syntaxe pro použití FFT funkce v MATLABu jsou uvedeny níže:
F = fft ( X )F = fft ( x, n )
F = fft ( x, n, rozm )
Tady:
F= fft(x) dává výpočet Diskrétní Fourierova transformace (DFT) z x pomocí Rychlá Fourierova transformace (FFT) algoritmus.
- Pokud x představuje vektor, fft(x) získá Fourierovu transformaci vektoru.
- Pokud x představuje matici, fft(x) poskytuje Fourierovu transformaci každého sloupce tím, že každý sloupec považuje za vektor.
F = fft(x,n) dává n-bod DFT. F má stejnou velikost jako x, pokud není zadána žádná hodnota.
- Je-li x vektor a jeho délka je menší než n, bude x doplněno koncovými nulami, dokud nedosáhne n.
- Je-li x vektor a jeho délka přesahuje n, je zkrácen na délku n.
- Je-li x matice, každý sloupec je považován za vektorový případ.
F = fft(x,n,dim) dá Fourierova transformace podél daného rozměru dim. Řekněme, fft(x, n, 2) dává n-bodovou Fourierovu transformaci pro každý řádek, pokud x představuje matici.
Následující příklady ilustrují fungování FFT funkce v MATLABu.
Příklad 1
Můžeme použít FFT v MATLABu demonstrovat generování a analýzu signálu se specifickými frekvenčními složkami a náhodným šumem.
Například:
ls = 2000 ;fs = 1500 ;
ts = 1 /fs;
tv = ( 0 :ls- 1 ) *ts;
f = 0,6 * bez ( 2 * pí * padesáti *televize ) + 3 * randn ( velikost ( televize ) ) + bez ( 2 * pí * 120 *televize ) ;
spiknutí ( 1000 *televize ( 1 : padesáti ) ,F ( 1 : padesáti ) )
xlabel ( 'tv (ms)' )
ylabel ( 'f(tv)' )
titul ( 'Poškozený signál s nulovým středním náhodným šumem' )
F = fft ( F ) ;
PS2 = břišní svaly ( F/ ls ) ;
PS1 = PS2 ( 1 : ls / 2 + 1 ) ;
PS1 ( 2 :konec- 1 ) = 2 *PS1 ( 2 :konec- 1 ) ;
f = fs* ( 0 : ( ls / 2 ) ) / ls ;
spiknutí ( f, PS1 )
titul ( „Amplitudové spektrum (jednostranné) PS1 pro f(t)“ )
xlabel ( 'f(Hz)' )
ylabel ( '|PS1(f)|' )
Poskytnutý kód generuje signál o délce 2000 vzorků (ls) , vzorkovací frekvence 1500 Hz (fs) a a vzorkovací období (ts) . The časový vektor (tv) je vytvořen na základě těchto parametrů. Signál F je složen z kombinace sinusových složek při 50 Hz a 120 Hz spolu s nulovým středním náhodným šumem. Poté se vynese do grafu se segmentem prvních 50 vzorků. Kód dále vypočítává FFT signálu a vypočítává amplitudové spektrum (PS1) . Nakonec se vynese amplitudové spektrum proti odpovídajícím frekvencím (f) v Hz.
Příklad 2
Zde je další příklad, který používá FFT funkce v MATLABu pro transformaci gaussovského pulsu přes časovou doménu do frekvenční oblasti.
fs = 500 ;ts = - 0,5 : 1 /fs: 0,5 ;
ls = délka ( ts ) ;
f = 1 / ( 4 * sqrt ( 2 * pí * 0,02 ) ) * ( zk ( -ts.^ 2 / ( 2 * 0,02 ) ) ) ;
spiknutí ( ts,f )
xlabel ( 'Čas (t)' )
ylabel ( 'f(t)' )
titul ( 'Časová doména' )
např. = 2 ^nextpow2 ( ls ) ;
f = fs* ( 0 : ( např/ 2 ) ) /např;
F = fft ( f,np ) ;
PF = břišní svaly ( F/np ) ;
spiknutí ( f,PF ( 1 :např/ 2 + 1 ) )
xlabel ( '(F)' )
ylabel ( '|PF(f)|' )
titul ( 'frekvenční doména' )
Poskytnutý kód generuje Gaussův pulzní signál v časové doméně a analyzuje jeho frekvenční obsah pomocí Rychlá Fourierova transformace (FFT) v MATLABu. Vynese se signál v časové oblasti a poté FFT se provádí pro získání reprezentace ve frekvenční oblasti. Výsledná amplitudové spektrum je vynesena proti odpovídajícím frekvencím.
Příklad 3
Následující příklad generuje tři sinusové signály s různými frekvencemi a vykresluje je v časové oblasti pomocí FFT funkce v MATLABu.
fs = 2500 ;ts = 1 /fs;
ls = 3000 ;
t = ( 0 :ls- 1 ) *ts;
r1 = bez ( 3 * pí * 60 *t ) ;
r2 = bez ( 3 * pí * 140 *t ) ;
r3 = bez ( 3 * pí * 350 *t ) ;
f = [ rl; r2; r3 ] ;
pro k = 1 : 3
podzápletka ( 3 , 1 ,k )
spiknutí ( t ( 1 : 250 ) ,F ( k, 1 : 250 ) )
titul ( [ 'Řádek č.' , č.2str ( k ) , ' (Časová doména)' ] )
konec
např. = 2 ^nextpow2 ( ls ) ;
d = 2 ;
F = fft ( f,np,d ) ;
PS2 = břišní svaly ( F/ ls ) ;
PS1 = PS2 ( :, 1 :např/ 2 + 1 ) ;
PS1 ( :, 2 :konec- 1 ) = 2 *PS1 ( :, 2 :konec- 1 ) ;
pro k= 1 : 3
podzápletka ( 3 , 1 ,k )
spiknutí ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) , PS1 ( k, 1 :např/ 2 ) )
titul ( [ 'Řádek č.' , č.2str ( k ) , '(frekvenční doména)' ] )
konec
Ve výše uvedeném kódu jsou ve výstupním okně v časové oblasti zobrazeny tři sinusové vlny, r1, r2 a r3. Signál ve frekvenční doméně „PS1“ je vytvořen pomocí funkce FFT k vlnám pro výpočet každého z jejich jednotlivých jednostranných amplitudových spekter.
Závěr
The FFT je cenný nástroj, který nám pomáhá porozumět signálům odlišně tím, že analyzuje jejich frekvenční obsah. S vestavěnou funkcí MATLABu, fft, výkon FFT výpočty na signálech se stávají pohodlnými. Tato funkce nám umožňuje zjistit zásadní podrobnosti o různých frekvencích a relativních intenzitách těchto frekvencí převodem dat z časové oblasti do frekvenční oblasti. Výše uvedený průvodce je zásadní pro hlubší porozumění charakteristikám signálu a přijímání informovaných rozhodnutí v různých aplikacích.