FFT làm gì trong MATLAB?

Fft Lam Gi Trong Matlab



Các Biến đổi Fourier nhanh (FFT) đề cập đến một phiên bản được tối ưu hóa cao của Biến đổi Fourier rời rạc (DFT) chuyển tín hiệu rời rạc từ miền thời gian sang miền tần số. Nội dung tần số, pha và các khía cạnh khác của tín hiệu có thể được quan sát thông qua FFT tính toán.

Bài viết này sẽ dạy chúng ta về hoạt động của FFT trong MATLAB.

Hiểu FFT

Các Biến đổi Fourier nhanh (FFT) đại diện cho kỹ thuật đặc biệt giúp chúng ta hiểu các tín hiệu theo cách khác. Thông thường, các tín hiệu được hiển thị dưới dạng các dãy số thay đổi theo thời gian, nhưng với FFT, chúng ta có thể thấy các tần số khác nhau có trong tín hiệu và mức độ mạnh của chúng. Nó giống như chia nhỏ một tín hiệu thành các nốt nhạc của nó và xem từng nốt nhạc lớn như thế nào.







Các FFT thuật toán thực hiện rất nhiều phép toán phức tạp trên dữ liệu tín hiệu. Nó lấy tín hiệu và chia nó thành các phần nhỏ hơn, sau đó tính toán tần số và cường độ của chúng cho từng phần. Cuối cùng, nó kết hợp tất cả các kết quả để cung cấp cho chúng ta một bức tranh về nội dung tần số của tín hiệu, mối quan hệ pha và các đặc điểm quan trọng khác.



Kỹ thuật này được sử dụng trong nhiều lĩnh vực vì nó giúp chúng ta phân tích và hiểu các tín hiệu tốt hơn. Ví dụ, trong xử lý tín hiệu , chúng ta có thể sử dụng FFT để lọc tiếng ồn không mong muốn hoặc phát hiện các mẫu cụ thể. TRONG phân tích âm thanh , chúng tôi có thể xác định các âm thanh khác nhau hoặc phân tích chất lượng của bản ghi âm. TRONG đang xử lý hình ảnh , FFT có thể giúp chúng ta phân tích các tần số không gian trong ảnh. Và trong viễn thông, FFT được sử dụng để truyền và nhận tín hiệu một cách hiệu quả.



Cách sử dụng FFT trong MATLAB

MATLAB cung cấp một hàm có sẵn gọi là fft điều đó cho phép chúng tôi thực hiện Biến đổi Fourier nhanh (FFT) tính toán trên tín hiệu. Chức năng này dễ sử dụng và cung cấp nhiều tùy chọn khác nhau để phân tích và thao tác tín hiệu trong miền tần số:





Cú pháp sử dụng FFT hàm trong MATLAB được đưa ra dưới đây:

f = fft ( x )

f = fft ( x,n )

f = fft ( x, n, mờ )

Đây:



F= fft(x) mang lại tính toán của Biến đổi Fourier rời rạc (DFT) của x bằng cách sử dụng Biến đổi Fourier nhanh (FFT) thuật toán.

  • Nếu x đại diện cho một vectơ, ff(x) mang lại biến đổi Fourier của vectơ.
  • Nếu x đại diện cho một ma trận, ff(x) cung cấp biến đổi Fourier của mỗi cột bằng cách coi mỗi cột là một vectơ.

F = fft(x,n) mang lại DFT điểm n. F có cùng kích thước với x khi không có giá trị nào được cung cấp.

  • Nếu x là một véc-tơ và độ dài của nó nhỏ hơn n, thì x sẽ được đệm thêm các số 0 ở cuối cho đến khi đạt đến n.
  • Nếu x là một vectơ và độ dài của nó vượt quá n, thì nó bị cắt ngắn đến độ dài n đó.
  • Nếu x là một ma trận, mỗi cột được coi là một trường hợp vectơ.

F = fft(x,n,mờ) mang lại Biến đổi Fourier dọc theo chiều mờ đã cho. Hãy cùng nói nào, fft(x, n, 2) đưa ra biến đổi Fourier n điểm cho mỗi hàng nếu x đại diện cho một ma trận.

Các ví dụ sau đây minh họa hoạt động của FFT hàm trong MATLAB.

ví dụ 1

chúng ta có thể sử dụng FFT trong MATLAB để chứng minh việc tạo và phân tích tín hiệu với các thành phần tần số cụ thể và nhiễu ngẫu nhiên.

Ví dụ:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

truyền hình = ( 0 :l- 1 ) *ts;

f = 0,6 * không có ( 2 * số Pi * năm mươi *TV ) + 3 * randn ( kích cỡ ( TV ) ) + không có ( 2 * số Pi * 120 *TV ) ;

kịch bản ( 1000 *TV ( 1 : năm mươi ) ,f ( 1 : năm mươi ) )

xnhãn ( 'tv (ms)' )

ylabel ( 'f(tv)' )

tiêu đề ( 'Tín hiệu bị hỏng có nhiễu ngẫu nhiên không trung bình' )

f = fft ( f ) ;

PS2 = cơ bụng ( F/ ls ) ;

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

PS1 ( 2 :kết thúc- 1 ) = 2 *PS1 ( 2 :kết thúc- 1 ) ;

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

kịch bản ( f, PS1 )

tiêu đề ( 'Phổ biên độ (Một mặt) PS1 cho f(t)' )

xnhãn ( 'f(Hz)' )

ylabel ( '|PS1(f)|' )

Mã được cung cấp tạo tín hiệu có độ dài là 2000 mẫu (ls) , tần số lấy mẫu của 1500Hz (giây) , và một khoảng thời gian lấy mẫu (ts) . Các véc tơ thời gian (tv) được tạo ra dựa trên các tham số này. tín hiệu f bao gồm sự kết hợp của các thành phần hình sin ở 50 Hz và 120 Hz, cùng với tiếng ồn ngẫu nhiên trung bình bằng không. Sau đó, nó được vẽ với một phân đoạn của 50 mẫu đầu tiên. Mã tiếp tục tính toán FFT của tín hiệu và tính toán phổ biên độ (PS1) . Cuối cùng, phổ biên độ được vẽ theo tần số tương ứng (f) tính bằng Hz.

ví dụ 2

Đây là một ví dụ khác sử dụng FFT chức năng trong MATLAB để chuyển đổi xung Gaussian qua miền thời gian sang miền tần số.

fs = 500 ;

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

ls = chiều dài ( ts ) ;

f = 1 / ( 4 * câu hỏi ( 2 * số Pi * 0,02 ) ) * ( kinh nghiệm ( -ts.^ 2 / ( 2 * 0,02 ) ) ) ;

kịch bản ( ts,f )

xnhãn ( 'Thời gian (t)' )

ylabel ( 'f(t)' )

tiêu đề ( 'Miền thời gian' )

ví dụ = 2 ^nextpow2 ( ls ) ;

f = f* ( 0 : ( ví dụ/ 2 ) ) /ví dụ;

f = fft ( f,np ) ;

PF = cơ bụng ( F/np ) ;

kịch bản ( f, PF ( 1 :ví dụ/ 2 + 1 ) )

xnhãn ( '(f)' )

ylabel ( '|PF(f)|' )

tiêu đề ( 'Tần số khu vực' )

Mã được cung cấp tạo tín hiệu xung Gaussian trong miền thời gian và phân tích nội dung tần số của nó bằng cách sử dụng Biến đổi Fourier nhanh (FFT) trong MATLAB. Tín hiệu miền thời gian được vẽ, và sau đó FFT được thực hiện để có được biểu diễn miền tần số. Kết quả phổ biên độ được vẽ trên các tần số tương ứng.

ví dụ 3

Ví dụ sau tạo ba tín hiệu hình sin với các tần số khác nhau và vẽ chúng trong miền thời gian bằng cách sử dụng FFT hàm trong MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

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

r1 = không có ( 3 * số Pi * 60 *t ) ;

r2 = không có ( 3 * số Pi * 140 *t ) ;

r3 = không có ( 3 * số Pi * 350 *t ) ;

f = [ r1; r2; r3 ] ;

k = 1 : 3

âm mưu phụ ( 3 , 1 ,k )

kịch bản ( t ( 1 : 250 ) ,f ( k, 1 : 250 ) )

tiêu đề ( [ 'Hàng Không' , số2str ( k ) , ' (Miền thời gian)' ] )

kết thúc

ví dụ = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

PS2 = cơ bụng ( F/ ls ) ;

PS1 = PS2 ( :, 1 :ví dụ/ 2 + 1 ) ;

PS1 ( :, 2 :kết thúc- 1 ) = 2 *PS1 ( :, 2 :kết thúc- 1 ) ;

k= 1 : 3

âm mưu phụ ( 3 , 1 ,k )

kịch bản ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :ví dụ/ 2 ) )

tiêu đề ( [ 'Hàng Không' , số2str ( k ) , '(Tần số khu vực)' ] )

kết thúc

Trong đoạn mã trên, ba sóng hình sin, r1, r2 và r3 được hiển thị trong cửa sổ đầu ra trong miền thời gian. Tín hiệu miền tần số “PS1” được tạo bằng cách sử dụng hàm FFT cho các sóng để tính toán từng phổ biên độ một phía riêng lẻ của chúng.

Phần kết luận


Các FFT là một công cụ có giá trị giúp chúng tôi hiểu các tín hiệu theo cách khác bằng cách phân tích nội dung tần số của chúng. Với chức năng có sẵn của MATLAB, fft, thực hiện FFT tính toán trên các tín hiệu trở nên thuận tiện. Chức năng này cho phép chúng tôi tìm hiểu các chi tiết quan trọng về các tần số khác nhau và cường độ tương đối của các tần số đó bằng cách chuyển đổi dữ liệu từ miền thời gian sang miền tần số. Hướng dẫn ở trên rất quan trọng để hiểu sâu hơn về các đặc điểm của tín hiệu và đưa ra quyết định sáng suốt trong các ứng dụng khác nhau.