Biến đổi Fourier rời rạc (Discrete Fourier Transform - DFT) là kỹ thuật toán học giúp chuyển đổi dữ liệu không gian (spatial data) thành dữ liệu tần số (frequency data).
Biến đổi Fourier nhanh (Fast Fourier Transform - FFT) là thuật toán được thiết kế để tính DFT của dữ liệu không gian.
Dữ liệu không gian thường ở dạng mảng đa chiều. Dữ liệu tần số là dữ liệu chứa thông tin về số lượng tín hiệu hoặc sóng trong một khoảng thời gian cụ thể.
Hãy xem cách đạt được DFT này bằng thư viện 'SciPy'. Đồ thị được tạo bằng matplotlib và dữ liệu được tạo bằng NumPy:
Ví dụ
from matplotlib import pyplot as plt
import numpy as np
from scipy import fftpack
my_freq = 6
freq_samp = 70
time_val = np.linspace(0, 3, 3 * freq_samp, endpoint=False)
amp_val = np.sin(my_freq * 3 * np.pi * time_val)
# Vẽ sóng sin
figure, axis = plt.subplots()
axis.plot(time_val, amp_val)
axis.set_xlabel('Thời gian (giây)')
axis.set_ylabel('Biên độ tín hiệu')
plt.show()
# FFT
A = fftpack.fft(amp_val)
frequency = fftpack.fftfreq(len(amp_val)) * freq_samp
figure, axis = plt.subplots()
axis.stem(frequency, np.abs(A))
axis.set_xlabel('Tần số (Hz)')
axis.set_ylabel('Độ lớn phổ tần số')
axis.set_xlim(-freq_samp / 2, freq_samp / 2)
axis.set_ylim(-7, 125)
plt.show()
Đầu ra

Giải thích
- Nhập các gói thư viện cần thiết.
- Tạo dữ liệu với sự giúp đỡ của thư viện NumPy.
- Dữ liệu này được vẽ dưới dạng sóng sin trên console nhờ matplotlib.
- Tiếp theo, gói
fftpackđược dùng để tìm biến đổi Fourier nhanh của dữ liệu tạo ra. - Dữ liệu này lại được vẽ lên đồ thị.
Lưu ý: scipy.fftpack hiện được coi là legacy. Phiên bản mới hơn khuyến khích dùng scipy.fft (module mới hơn, nhanh hơn, API tốt hơn).