1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo 2 TN XLSTH

7 7 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 581,49 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

THỰC HIỆN FFT-N ĐIỂM 1.. 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ố... Viết chương trình thực hiện tìm biến đổi FFT-128 điểm của

Trang 2

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ố

- Code Matlab:

Fs = 8000;

Ts = 1/Fs;

T = 0.1

t = 0:Ts:T - Ts;

xn = sin(2*pi*200*t) + sin(2*pi*3000*t);

L = length(xn);

xk = fft(xn,L);

xk_mag = abs(xk);

xk_phase = angle(xk);

% Signal plot

subplot(1,3,1);

plot(t,xn);

xlabel('Time (sec)');

ylabel('Amplitude');

title('x(n)');

% Spectrum plot

subplot(1,3,2);

stem((0:L/2-1)*Fs/L,xk_mag(1:L/2)/L);

xlabel('Frequency (Hz)');

ylabel('Amplitude');

title('Magnitude');

Trang 3

- Kết quả mô phỏng:

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ố

- Code Matlab:

Fs = 8000;

Ts = 1/Fs;

T = 0.1

t = 0:Ts:T - Ts;

xn = sin(2*pi*200*t) + sin(2*pi*3000*t);

L = 128;

xk = fft(xn,L);

xk_mag = abs(xk);

xk_phase = angle(xk);

% Signal plot

subplot(1,3,1);

plot(t,xn);

xlabel( 'Time (sec)' );

ylabel( 'Amplitude' );

title( 'x(n)' );

% Spectrum plot

subplot(1,3,2);

stem((0:L/2-1)*Fs/L,xk_mag(1:L/2)/L);

xlabel( 'Frequency (Hz)' );

ylabel( 'Amplitude' );

Trang 4

title( 'Magnitude' );

subplot(1,3,3);

stem((0:L/2-1)*Fs/L,xk_phase(1:L/2));

xlabel( 'Frequency (Hz)' );

ylabel( 'Phase' );

title( 'Phase' );

- Kết quả mô phỏng:

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ố

- Code Matlab:

Fs = 8000;

Ts = 1/Fs;

T = 0.1

t = 0:Ts:T - Ts;

xn = sin(2*pi*200*t) + sin(2*pi*3000*t);

L = 256;

xk = fft(xn,L);

xk_mag = abs(xk);

xk_phase = angle(xk);

% Signal plot

subplot(1,3,1);

plot(t,xn);

Trang 5

xlabel( 'Time (sec)' );

ylabel( 'Amplitude' );

title( 'x(n)' );

% Spectrum plot

subplot(1,3,2);

stem((0:L/2-1)*Fs/L,xk_mag(1:L/2)/L);

xlabel( 'Frequency (Hz)' );

ylabel( 'Amplitude' );

title( 'Magnitude' );

subplot(1,3,3);

stem((0:L/2-1)*Fs/L,xk_phase(1:L/2));

xlabel( 'Frequency (Hz)' );

ylabel( 'Phase' );

title( 'Phase' );

- Kết quả mô phỏng:

Trang 6

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:

clc;

clear;

[xn,Fs] = audioread('Nguyễn-Trần-Tú-Anh.wav');

% ham stft

[S,F,T] = stft(xn,'Window', gausswin(256),'OverlapLength',30);

waterfall(F,T,abs(S(:,:,1))');

figure(1);

xlabel('k');

ylabel('Frequency (Hz)');

zlabel('Amplitude');

title('STFT');

% ham dft

L=length(xn);

t=0:Fs/L:(L-1)*Fs/L;

xk = fft(xn,L);

xk_mag = abs(xk);

figure(2);

subplot(1,3,2);

stem((0:L/2-1)*Fs/L,xk_mag(1:L/2)/L);

xlabel('Frequency (Hz)');

ylabel('Amplitude');

title('Magnitude');

Trang 7

-Kết quả mô phỏng:

b Nhận xét và giải thích đồ thị trên

Cửa sổ Gauss có độ dài L=256 dùng cho biến đổi STFT với khoảng k gần nhau sẽ mô phỏng phổ biên độ của tín hiệu âm thanh ban đầu chính xác hơn so với biến đổi DFT

Ngày đăng: 28/08/2022, 22:37

w