Tần số giới hạn giữa dải thông và dải chặn gọi là tần số cắt và thường được ký hiệu là c.2.. Ý nghĩa và mục đích- Ý nghĩa: Bộ lọc là thiết bị quan trọng trong xử lý tín hiệu số, cho phép
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA KỸ THUẬT ĐIỆN TỬ 1
BÁO CÁO BÀI TẬP LỚN
MÔN XỬ LÝ TÍN HIỆU SỐ Bài Tập 3 : Thiết kế bộ lọc FIR dải chặn
Thành viên: Vũ Lê Hoàng – B22DCKH046
Nguyễn Viết Tuấn Anh – B22DCCN038 Nguyễn Quyết Thắng – B22DCCN813 Lưu Minh Hiển – B22DCCN290
Trang 2
Hà Nội – 2023
I Cơ sở lý thuyết
A Bộ lọc số lý tưởng
1 Khái niệm
Khái niệm về dải thông và dải chặn: Dải thông là dải tần số mà hệ xử lý
số cho tín hiệu số đi qua, dải chặn là dải tần số mà hệ xử lý số không cho tín hiệu số đi qua
Đối với hệ xử lý số lý tưởng: dải thông 2 là vùng tần số mà |H(ej )|= 1, còn dải chặn |H(ej )|= 0 Tần số giới hạn giữa dải thông và dải chặn gọi là tần số cắt và thường được ký hiệu là c
2 Ý nghĩa và mục đích
- Ý nghĩa: Bộ lọc là thiết bị quan trọng trong xử lý tín hiệu số, cho phép loại bỏ các tần số không mong muốn và lọc ra các tần số cần thiết từ tín hiệu Việc thiết kế bộ lọc giúp xử lý, lọc và phân tích tín hiệu một cách hiệu quả
- Mục đích:
Loại bỏ nhiễu, làm sạch tín hiệu
Phân tích thành phần tần số của tín hiệu
Truyền tải thông tin trong dải tần số mong muốn
Tách rời các tín hiệu có cùng băng tần
Chuyển đổi dải băng tần của tín hiệu
3 Bộ lọc chặn dải lý tưởng
- Các thông số của bộ lọc chặn dải lý tưởng.
Trang 3B Bộ lọc FIR
- Bộ lọc FIR (Finite Impulse Response) là một loại bộ lọc trong xử lý tín
hiệu có phản ứng hồi quy hữu hạn Các bộ lọc FIR có một số đặc điểm
cơ bản:
Hồi quy hữu hạn: Các bộ lọc FIR có đáp ứng xung có độ dài hữu hạn,
không có phản ứng vô hạn như các bộ lọc IIR Điều này có nghĩa là nó chỉ phản ứng với một tín hiệu đầu vào trong một khoảng thời gian hữu hạn và không tạo ra vòng lặp phản hồi
Dễ thiết kế: Bộ lọc FIR thường dễ thiết kế hơn so với các bộ lọc IIR,
vì chúng không có phần tử phản hồi và không gây ra vấn đề ổn định có thể xảy ra trong các bộ lọc IIR
Tính ổn định: Bộ lọc FIR thường ổn định hơn vì không có các vòng
lặp phản hồi có thể gây ra các vấn đề ổn định như ở các bộ lọc IIR
Phản ứng đáp ứng thời gian và tần số: Với bộ lọc FIR, bạn có thể
đạt được một đáp ứng tần số cụ thể và kiểm soát thời gian trễ
Khả năng thực hiện các chức năng lọc phức tạp: Các bộ lọc FIR có
thể thực hiện các chức năng lọc phức tạp, bao gồm lọc thông cao, lọc thông thấp, lọc thông bandpass, và các chức năng lọc khác một cách hiệu quả
Khả năng triệt tiêu rõ ràng tín hiệu nhiễu: Do tính chất của chúng,
các bộ lọc FIR có khả năng tách rõ ràng giữa tín hiệu và nhiễu
Trang 4Có 2 dạng xung:
- Đáp ứng xung h(n) có 2 trường hợp:
Trang 5- 3 kiểu phương pháp hay gặp trong bộ lọc FIR:
Cửa sổ
Lấy mẫu tần số
Least equare error
II Thiết kế bộ lọc FIR chặn dải
1 Phương pháp cửa sổ.
- Các bước thực hiện
B1: Khai báo các biến và tham số:
Khai báo tần số lấy mẫu fs
Khai báo thời gian t từ 0 đến 1 với khoảng cách 1/fs
B2: Tạo tín hiệu đầu vào:
Sử dụng hàm chirp để tạo tín hiệu chirp trong khoảng thời gian t Gán kết quả cho biến chirp_signal
B3: Thiết kế bộ lọc FIR:
Chọn hàm đáp ứng xung là hamming
Độ dài bộ lọc là N+1
Tính toán hệ số bộ lọc và gán vào biến b
B4: Vẽ đáp ứng xung của bộ lọc:
Sử dụng hàm freqz với tham số b, 1, 1024, fs
B5: Áp dụng bộ lọc lên tín hiệu:
Dùng hàm filter với tham số b, 1, chirp_signal
Gán kết quả cho biến filtered_signal
B6: Vẽ và so sánh kết quả:
Vẽ 2 subplot để so sánh tín hiệu đầu vào và đầu ra
- Mã giả (Matlab):
% Thiết kế bộ lọc FIR sử dụng cửa sổ Hamming
fs = 1000; % Tần số lấy mẫu
Trang 6fpass = 100; % Tần số cắt chặn dải chuyển qua fstop = 200; % Tần số cắt chặn dải chặn lại
N = 100; % Bậc bộ lọc
% Tạo tín hiệu đầu vào (chirp signal)
t = 0:1/fs:5; % Thời gian từ 0 đến 5 giây
f0 = 50; % Tần số ban đầu
f1 = 250; % Tần số kết thúc
chirp_signal = chirp(t, f0, 5, f1, 'linear');
% Thiết kế bộ lọc FIR sử dụng hàm fir1
f_normalized = [fpass/(fs/2) fstop/(fs/2)];
b = fir1(N, f_normalized, 'stop', hamming(N + 1));
% Vẽ đáp ứng xung của bộ lọc FIR
freqz(b, 1, 1024, fs);
% Áp dụng bộ lọc lên tín hiệu đầu vào
filtered_signal = filter(b, 1, chirp_signal);
% Vẽ tín hiệu đầu vào và tín hiệu đầu ra
figure;
subplot(2,1,1);
plot(t, chirp_signal);
title('Tín hiệu đầu vào (Chirp)');
xlabel('Thời gian');
ylabel('Biên độ');
subplot(2,1,2);
plot(t, filtered_signal);
title('Tín hiệu đầu ra (Filtered)');
xlabel('Thời gian');
ylabel('Biên độ');
Kết quả:
- Đáp ứng tần số
Trang 7Discover more
from:
GDQP D22
Document continues below
Giáo Dục Quốc
Phòng HCM
Học viện Công nghệ…
4 documents
Go to course
Trang 8- So sánh tín hiệu vào / ra:
TỪ KHÓA HP1 VÀ 2 - Từ khóa học phần 1 và 2
Giáo Dục Quốc Phòng… 100% (1)
34
03 18 kiemtra 2 Lưu Gia Bảo
Giáo Dục Quốc
8
C From Control Structures through…
Giáo Dục Quốc
1269
[GR] Answers to Questions within the…
Autómatas Programables 94% (50)
24
Copy of Chicken Genetics SE
ap us history 100% (7)
4
Cambridge Data Form West 2022 thru 2023
AP Biology 100% (6)
2
Trang 92 Lấy mẫu tần số
- Các bước thực hiện:
B1: Khai báo các tham số:
Tần số lấy mẫu fs = 1000Hz
Tính tần số Nyquist là fs/2 = 500Hz
B2: Thiết kế thông số bộ lọc:
Tần số băng thông qua f_pass = 100Hz Tần số băng thông dừng f_stop = 300Hz
B3: Chuyển đổi tần số sang dạng từ 0 đến 1:
f_pass_normalized = f_pass/Nyquist = 0.2 f_stop_normalized = f_stop/Nyquist = 0.6
B4: Thiết kế bộ lọc FIR:
Bậc bộ lọc filter_order = 50
Sử dụng hàm fir2 thiết kế theo thông số trên
B5: Vẽ đáp ứng tần số của bộ lọc:
Sử dụng hàm freqz
B6: Tạo tín hiệu đầu vào:
Trang 10Dùng hàm chirp tạo tín hiệu từ 0-400Hz
B7: Áp dụng bộ lọc lên tín hiệu:
Dùng hàm filter
B8: Vẽ và so sánh kết quả đầu vào và đầu ra.
- Mã giả:
% Thiết kế bộ lọc FIR chặn dải
fs = 1000; % Tần số lấy mẫu
Nyquist = fs/2; % Tần số Nyquist
% Thiết kế thông số bộ lọc
f_pass = 100; % Tần số cắt băng thông chuyển qua
f_stop = 300; % Tần số cắt băng thông dừng lại
% Chuyển đổi tần số cắt sang dạng tần số rất nhỏ - nằm trong khoảng
từ 0 đến 1
f_pass_normalized = f_pass / Nyquist;
f_stop_normalized = f_stop / Nyquist;
% Thiết kế bộ lọc FIR
filter_order = 50; % Bậc bộ lọc
filter_coefficients = fir2(filter_order, [f_pass_normalized,
f_stop_normalized], 'stop' );
% Vẽ đáp ứng tần số của bộ lọc
freqz(filter_coefficients, 1, 1024, fs);
% Tạo tín hiệu dạng chirp đầu vào
t = 0:1/fs:1-1/fs;
input_signal = chirp(t, 0, 1, 400); % Tín hiệu dạng chirp từ 0Hz đến 200Hz
% Áp dụng bộ lọc FIR lên tín hiệu vào
output_signal = filter(filter_coefficients, 1, input_signal);
% Vẽ tín hiệu vào và ra
figure;
subplot(2,1,1);
plot(t, input_signal);
title('Tín hiệu đầu vào (Chirp)');
xlabel('Thời gian');
Trang 11ylabel('Biên độ');
subplot(2,1,2);
plot(t, output_signal);
title('Tín hiệu đầu ra sau khi áp dụng bộ lọc FIR'); xlabel('Thời gian');
ylabel('Biên độ');
- Đáp ứng xung:
- So sánh tín hiệu đầu vào / ra:
Trang 123 Least equare error
- 1 Xác định thông số:
fs: Tần số lấy mẫu
f_pass: Tần số cắt thấp của dải chặn
f_stop: Tần số cắt cao của dải chặn
delta_f: Độ lệch tần số
2 Tính toán thông số cho bộ lọc:
Chuẩn hóa các tần số và độ lớn tương ứng:
frequencies = [0, f_pass - delta_f, f_pass, f_stop, f_stop + delta_f, fs/2];
magnitudes = [1, 1, 0, 0, 1, 1];
3 Xác định bậc của bộ lọc FIR:
filter_order: Số lượng hệ số của bộ lọc FIR
4 Thiết kế bộ lọc FIR:
Trang 13Sử dụng hàm firls
5 Tạo tín hiệu đầu vào:
Sử dụng các thông số như thời gian mẫu, tần số bắt đầu và kết thúc để tạo tín hiệu đầu vào,
6 Vẽ đáp ứng tần số của bộ lọc:
7 Vẽ đồ thị của tín hiệu đầu vào và đầu ra:
- Mã giả:
% Thiết kế bộ lọc FIR chặn dải sử dụng phương pháp Least Equare error
fs = 1000; % Tần số lấy mẫu
f_pass = 100; % Tần số cắt thấp của dải chặn
f_stop = 150; % Tần số cắt cao của dải chặn
delta_f = 20; % Độ lệch tần số
% Tính các thông số cho bộ lọc
frequencies = [0, f_pass - delta_f, f_pass, f_stop, f_stop + delta_f, fs/2]; % Tần số chuẩn hóa
magnitudes = [1, 1, 0, 0, 1, 1]; % Độ lớn tần số tương ứng
% Bậc của bộ lọc FIR
filter_order = 100;
% Thiết kế bộ lọc FIR sử dụng phương pháp Least Equare error filter_coefficients = firls(filter_order, frequencies / (fs/2), magnitudes);
% Tạo tín hiệu chirp đầu vào
t = 0:1/fs:1-1/fs;
f0 = 20;
f1 = 200;
input_signal = chirp(t, f0, 1, f1);
% Áp dụng bộ lọc FIR vào tín hiệu đầu vào
output_signal = filter(filter_coefficients, 1, input_signal);
% Vẽ đáp ứng tần số của bộ lọc
freqz(filter_coefficients, 1, 1024, fs);
% Hiển thị tín hiệu đầu vào và đầu ra
Trang 14subplot(2,1,1);
plot(t, input_signal);
title('Tín hiệu đầu vào (Chirp)'); xlabel('Thời gian');
ylabel('Biên độ');
subplot(2,1,2);
plot(t, output_signal);
title('Tín hiệu đầu ra sau lọc FIR'); xlabel('Thời gian');
ylabel('Biên độ');
- Đáp ứng xung:
Trang 15- So sánh 2 tín hiệu đầu vào / ra :