Apa yang Dilakukan FFT di MATLAB?

Apa Yang Dilakukan Fft Di Matlab



Itu Transformasi Fourier Cepat (FFT) mengacu pada versi yang sangat optimal dari Transformasi Fourier Diskrit (DFT) yang mengubah sinyal diskrit melalui domain waktu ke domain frekuensi. Konten frekuensi, fase, dan aspek lain dari sinyal dapat diamati melalui FFT perhitungan.

Artikel ini akan mengajarkan kita tentang cara kerja FFT dalam MATLAB.

Memahami FFT

Itu Transformasi Fourier Cepat (FFT) mewakili teknik khusus yang membantu kita memahami sinyal secara berbeda. Biasanya, sinyal ditampilkan sebagai urutan angka yang berubah seiring waktu, tetapi dengan FFT, kita dapat melihat frekuensi berbeda apa yang ada dalam sinyal dan seberapa kuat mereka. Ini seperti memecah sinyal menjadi not musiknya dan melihat seberapa keras setiap notnya.







Itu FFT algoritma melakukan banyak perhitungan rumit pada data sinyal. Dibutuhkan sinyal dan membaginya menjadi bagian-bagian yang lebih kecil, kemudian menghitung frekuensi dan kekuatannya untuk setiap bagian. Terakhir, ini menggabungkan semua hasil untuk memberi kita gambaran tentang konten frekuensi sinyal, hubungan fase, dan karakteristik penting lainnya.



Teknik ini digunakan di banyak bidang karena membantu kita menganalisis dan memahami sinyal dengan lebih baik. Misalnya, di pemrosesan sinyal , kita bisa gunakan FFT untuk menyaring kebisingan yang tidak diinginkan atau mendeteksi pola tertentu. Di dalam analisis audio , kami dapat mengidentifikasi suara yang berbeda atau menganalisis kualitas rekaman audio. Di dalam pengolahan citra , FFT dapat membantu kami menganalisis frekuensi spasial pada gambar. Dan dalam telekomunikasi, FFT digunakan untuk mengirim dan menerima sinyal secara efektif.



Cara Menggunakan FFT di MATLAB

MATLAB menyediakan fungsi bawaan yang disebut fft yang memungkinkan kita untuk tampil Transformasi Fourier Cepat (FFT) perhitungan pada sinyal. Fungsi ini mudah digunakan dan menawarkan berbagai opsi untuk menganalisis dan memanipulasi sinyal dalam domain frekuensi:





Sintaks untuk menggunakan the FFT fungsi dalam MATLAB diberikan di bawah ini:

F = fft ( X )

F = fft ( x,n )

F = fft ( x, n, redup )

Di Sini:



F=fft(x) menghasilkan perhitungan dari Transformasi Fourier Diskrit (DFT) dari x menggunakan Transformasi Fourier Cepat (FFT) algoritma.

  • Jika x mewakili vektor, fft(x) menghasilkan transformasi Fourier vektor.
  • Jika x menyatakan suatu matriks, fft(x) memberikan transformasi Fourier dari setiap kolom dengan memperlakukan setiap kolom sebagai vektor.

F = fft(x,n) menghasilkan n-point DFT. F memiliki ukuran yang identik dengan x ketika tidak ada nilai yang diberikan.

  • Jika x adalah vektor dan panjangnya kurang dari n, x diisi dengan nol di belakangnya hingga mencapai n.
  • Jika x adalah vektor dan panjangnya melebihi n, ia dipotong dengan panjang n itu.
  • Jika x adalah matriks, setiap kolom dianggap sebagai kasus vektor.

F = fft(x,n,redup) menghasilkan Transformasi Fourier sepanjang redup dimensi yang diberikan. Katakanlah, fft(x, n, 2) memberikan transformasi Fourier titik-n untuk setiap baris jika x mewakili matriks.

Contoh berikut mengilustrasikan cara kerja dari FFT fungsi dalam MATLAB.

Contoh 1

Kita bisa gunakan FFT di MATLAB untuk mendemonstrasikan pembuatan dan analisis sinyal dengan komponen frekuensi tertentu dan noise acak.

Misalnya:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

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

f = 0,6 * tanpa ( 2 * pi * lima puluh *televisi ) + 3 * randn ( ukuran ( televisi ) ) + tanpa ( 2 * pi * 120 *televisi ) ;

merencanakan ( 1000 *televisi ( 1 : lima puluh ) ,F ( 1 : lima puluh ) )

xlabel ( 'tv (milidetik)' )

ylabel ( 'f(tv)' )

judul ( 'Sinyal Rusak memiliki Kebisingan Acak Nol-Mean' )

F = fft ( F ) ;

PS2 = abs ( F/ ls ) ;

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

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

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

merencanakan ( f, PS1 )

judul ( 'Spektrum Amplitudo (Single-Sided) PS1 untuk f(t)' )

xlabel ( 'f(Hz)' )

ylabel ( '|PS1(p)|' )

Kode yang disediakan menghasilkan sinyal dengan panjang 2000 sampel (ls) , frekuensi sampling dari 1500 Hz (dtk) , dan a periode pengambilan sampel (ts) . Itu vektor waktu (tv) dibuat berdasarkan parameter tersebut. Sinyal F terdiri dari kombinasi komponen sinusoidal pada 50 Hz dan 120 Hz, bersama dengan noise acak rata-rata nol. Kemudian diplot dengan segmen dari 50 sampel pertama. Kode lebih lanjut menghitung FFT dari sinyal dan menghitung spektrum amplitudo (PS1) . Akhirnya, spektrum amplitudo diplot terhadap frekuensi yang sesuai (f) dalam Hz.

Contoh 2

Berikut adalah contoh lain yang menggunakan the FFT fungsi di MATLAB untuk transformasi pulsa Gaussian melalui domain waktu ke domain frekuensi.

fs = 500 ;

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

ls = panjang ( ts ) ;

f = 1 / ( 4 * persegi ( 2 * pi * 0,02 ) ) * ( exp ( -ts.^ 2 / ( 2 * 0,02 ) ) ) ;

merencanakan ( ts,f )

xlabel ( 'Waktu (t)' )

ylabel ( 'f(t)' )

judul ( 'Domain waktu' )

misalnya = 2 ^nextpow2 ( ls ) ;

f = fs* ( 0 : ( misalnya/ 2 ) ) /misalnya;

F = fft ( f, np ) ;

PF = abs ( F/np ) ;

merencanakan ( f, PF ( 1 :misalnya/ 2 + 1 ) )

xlabel ( '(F)' )

ylabel ( '|PF(f)|' )

judul ( 'Domain Frekuensi' )

Kode yang disediakan menghasilkan sinyal pulsa Gaussian dalam domain waktu dan menganalisis konten frekuensinya dengan menggunakan Transformasi Fourier Cepat (FFT) dalam MATLAB. Sinyal domain waktu diplot, dan kemudian FFT dilakukan untuk mendapatkan representasi domain frekuensi. Hasilnya spektrum amplitudo diplot terhadap frekuensi yang sesuai.

Contoh 3

Contoh berikut menghasilkan tiga sinyal sinusoidal dengan frekuensi berbeda dan memplotnya dalam domain waktu menggunakan FFT fungsi dalam MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

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

r1 = tanpa ( 3 * pi * 60 *T ) ;

r2 = tanpa ( 3 * pi * 140 *T ) ;

r3 = tanpa ( 3 * pi * 350 *T ) ;

f = [ r1; r2; r3 ] ;

untuk k = 1 : 3

subplot ( 3 , 1 ,k )

merencanakan ( T ( 1 : 250 ) ,F ( k, 1 : 250 ) )

judul ( [ 'Baris No' , num2str ( k ) , ' (Domain waktu)' ] )

akhir

misalnya = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

PS2 = abs ( F/ ls ) ;

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

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

untuk k= 1 : 3

subplot ( 3 , 1 ,k )

merencanakan ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :misalnya/ 2 ) )

judul ( [ 'Baris No' , num2str ( k ) , '(Domain Frekuensi)' ] )

akhir

Dalam kode di atas, tiga gelombang sinusoidal, r1, r2, dan r3 ditampilkan di jendela keluaran dalam domain waktu. Sinyal domain frekuensi 'PS1' dibuat dengan menggunakan fungsi FFT ke gelombang untuk menghitung masing-masing spektrum amplitudo satu sisi masing-masing.

Kesimpulan


Itu FFT adalah alat berharga yang membantu kita memahami sinyal secara berbeda dengan menganalisis konten frekuensinya. Dengan fungsi bawaan MATLAB, fft, perform FFT perhitungan pada sinyal menjadi nyaman. Fungsi ini memungkinkan kita mempelajari detail penting tentang frekuensi yang berbeda dan intensitas relatif dari frekuensi tersebut dengan mengubah data dari domain waktu ke domain frekuensi. Panduan di atas sangat penting untuk mendapatkan pemahaman yang lebih dalam tentang karakteristik sinyal dan membuat keputusan berdasarkan informasi dalam aplikasi yang berbeda.