Tải bản đầy đủ (.docx) (13 trang)

BÁO cáo THÍ NGHIỆM bài 2 BIẾN đổi DFT và GIẢI THUẬT FFT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (317.37 KB, 13 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-----⁂-----

BÁO CÁO THÍ NGHIỆM
BÀI 2: BIẾN ĐỔI DFT VÀ GIẢI THUẬT FFT
Họ và tên sinh viên: Trần Trung Kiên
MSSV: 1913863
GVHD: Huỳnh Văn Phận


5.1 Thực hiện FFT-N điểm
1. Tạo một mẫu tín hiệu sine có các thành phần tần số 200 Hz và 3000 Hz trong
khoảng thời gian t = 0 đến t = 0.1 s, với tần số lấy mẫu Fs = 8 kHz từ chương
trình Matlab và lưu vào biến giá trị xn:
a. Viết chương trình thực hiện tìm biến đổi DFT của tín hiệu trên và vẽ đồ thị
phổ biên độ miền tần số.
Các lệnh matlab:

Fs = 8000;
Ts = 1/Fs;
F_xt = [200,3000];
T_sim = 0.1;
t = 0 :Ts : T_sim - Ts;
xn = 0;
for kk = 1:length(F_xt)
xn = xn +sin(2*pi*F_xt(kk)*t);
end
N = length(xn);
Xk = fft(xn,N);
Xk_Amp = abs(Xk);


Xk_Pha = angle(Xk);
semilogy((0:N/2-1)*Fs/N,Xk_Amp(1:N/2)/N);
xlabel('Frequency (Hz)');
ylabel('Amplitude');


title('Tinh DFT');

Kết quả :


b. Viết chương trình thực hiện tìm biến đổi FFT-128 điểm của tín hiệu trên và
vẽ đồ thị phổ biên độ miền tần số.
Các lệnh matlab:

Fs = 8000;
Ts = 1/Fs;
F_xt = [200,3000];
T_sim = 0.1;
t = 0 :Ts : T_sim - Ts;


xn = 0;
for kk = 1:length(F_xt)
xn = xn +sin(2*pi*F_xt(kk)*t);
end
N = 128;
Xk = fft(xn,N);
Xk_Amp = abs(Xk);
Xk_Pha = angle(Xk);

semilogy((0:N/2-1)*Fs/N,Xk_Amp(1:N/2)/N);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Tinh DFT');

Kết quả:


c. Viết chương trình thực hiện tìm biến đổi FFT-256 điểm của tín hiệu trên và
vẽ đồ thị phổ biên độ miền tần số.
Các lệnh matlab:


Fs = 8000;
Ts = 1/Fs;
F_xt = [200,3000];
T_sim = 0.1;
t = 0 :Ts : T_sim - Ts;
xn = 0;
for kk = 1:length(F_xt)
xn = xn +sin(2*pi*F_xt(kk)*t);
end
N = 256;
Xk = fft(xn,N);
Xk_Amp = abs(Xk);
Xk_Pha = angle(Xk);
semilogy((0:N/2-1)*Fs/N,Xk_Amp(1:N/2)/N);


xlabel('Frequency (Hz)');

ylabel('Amplitude');
title('Tinh DFT');

Kết quả:


d. Nhận xét và giải thích các đồ thị trên.
-Đồ thị DFT thể hiện rõ dạng sóng của tín hiệu do có số lượng lấy mẫu lớn.
-Đồ thị FFT-128 điểm do có số lượng điểm ít nên tín hiệu thu được có dạng
đơn giản hơn so với DFT và bị méo tại một vài điểm nhưng không đáng kể.
- đồ thị FFT-256 điểm có đồ thị giống như FFT – 128 điểm nhưng do số
lượng điểm nhiều hơn nên tín hiệu gần như không bị méo dạng

5.2 Thực hiện STFT
2. Tạo một mẫu tín hiệu âm thanh có định dạng .wav từ chương trình Matlab hoặc
các ứng dụng khác và lưu vào biến giá trị xn:


a. Viết chương trình thực hiện tìm biến đổi STFT của tín hiệu âm thanh trên
với cửa sổ Gaussian độ dài 256, độ dài chồng lấn 30. Sau đó vẽ đồ thị phổ
biên độ miền tần số của biến đổi STFT trên.
Code matlab:

[xn,Fs] = audioread('signal.wav');
Nx = length(xn);

t = [0:1:(Nx-1)]/Fs;
M = 256;
L=30;
R=M-L;

k = floor((Nx-L)/(M-L));
Grauss_wid = gausswin(M);
X = zeros(M,k);
for n = 1:k
xg = xn( (n-1)*R+1 : (n1)*R+M).*Grauss_wid*exp(-1j*2*pi*n/Fs);
X(:,n) = fft(xg);


end
figure(1);
hold on
X_Amp = abs(X);
semilogy((0:k-1)*Fs/k,X_Amp(1:k)/k);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Tinh STFT');


Kết quả:


b. Nhận xét và giải thích đồ thị trên.
- Trong STFT âm thanh được tách ra phân chia theo các thành phần tần số
do đó ta có thể thấy rõ được dạng tín hiệu tại các tần số khác nhau.
-Trong miền tần số, tín hiệu được chia thành từng đoạn nhỏ do tần số được
được chia thành các đoạn cố định và lấy DFT từng đoạn.
-Đồ thị cho thấy tại các tần số khác nhau tín hiệu âm thanh được lấy mẫu có
biên độ giảm dần sang hai bên do tác động cảu hàm cửa sổ.




×