Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

ĐẠI HỌC QUỐC GIA

ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH




CHUẨN BỊ THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU


BÀI 3:
BỘ LỌC FIR VÀ IIR
LỚP L06 --- HK 211
NGÀY NỘP: 25/1/2022

Giảng viên hướng dẫn: Huỳnh Văn Phận


Sinh viên: Bùi Đình Tiến
MSSV: 1915467

Thành phố Hồ Chí Minh – 2022


Câu hỏi chuẩn bị 3: Viết chương trình Matlab thực hiện giải thuật xử lý mẫu dạng
trực tiếp để thực hiện bộ lọc IIR tổng quát có bậc M có tín hiệu ngõ vào x. Lưu lại
với tên Bai_3_NHOMx_CB_3_IIR_Direct.m ./.
Code matlab:
% % % %
clc
clear
xn =
a =
b =
Lx=length(xn);
La = length(a);
Lb = length(b);
M = max(La,Lb);
Ly=Lx+M;

v = zeros(1,Lb);
w =zeros(1 , La);
yn= zeros(1,Ly);

X=[xn, zeros(1,M)];
for n=0 : Ly-1
i= n+1
v(1) = X(i);
w(1) = -a(2:end) * w(2:end).' + b*v.';
yn(i) = w(1);
for j= La: -1 : 2
w(j) = w(j -1);
end
for k= Lb: -1 : 2
v(k) = v(k -1);
end
end

2  3z 1  4 z 3
H z 
Câu hỏi chuẩn bị 4: Cho bộ lọc IIR có hàm truyền 1  0.2 z 1  0.3z 2  0.5 z 4 ,
hãy
1. Vẽ sơ đồ khối dạng trực tiếp 1 của bộ lọc. Vẽ đáp ứng tần số của bộ lọc (có
thể sử dụng hàm freqz trên Matlab.) Tìm ngõ ra y(n) khi ngõ vào x(n) = [1, 2, -1,
1].
2. Sử dụng chương trình Matlab đã viết ở câu hỏi chuẩn bị 3 để xác định ngõ ra
của bộ lọc khi ngõ vào     . Kiểm tra tính chính xác với kết quả tính
x n  1, 2, 1,1
được ở ý 1. Lưu lại với tên Bai_3_NHOMx_CB_4_IIR_Direct.m ./.

1. Sơ đồ khối của bộ lọc

Đáp ứng tần số của bộ lọc:


Code matlab
clc
clear

w = 0:pi/100:pi;
a= [2 , -3 , 0, 4];
b= [1 ,0.2, -0.3, 0, 0.5];

[H_matlab, w] = freqz(a,b);
H_matlab_manitude = abs(H_matlab);
H_matlab_phase = angle(H_matlab);
subplot(1,2,1);
plot(w,H_matlab_manitude);
title('Amplitude Response');
subplot(1,2,2);
plot(w,H_matlab_phase);
title('Phase Response');
kết quả

Ngõ ra yn khi xn =[1, 2, -1, 1] :

2. code matlab
% % % %
clc
clear
xn = [1, 2, -1, 1];
b= [2 , -3 , 0, 4];
a= [1 ,0.2, -0.3, 0, 0.5];
Lx=length(xn);
La = length(a);
Lb = length(b);
M = max(La,Lb);
Ly=Lx+M;

yn= zeros(1,Ly);
v = zeros(1,Lb);
w =zeros(1 , La);
X=[xn, zeros(1,M)];
for n=0 : Ly-1
i= n+1
v(1) = X(i);
w(1) = -a(2:end) * w(2:end).' + b*v.';
yn(i) = w(1);
for j= La: -1 : 2
w(j) = w(j -1);
end
for k= Lb: -1 : 2
v(k) = v(k -1);
end
end

kết quả:

Câu hỏi chuẩn bị 5: Viết chương trình Matlab thực hiện giải thuật xử lý mẫu dạng
chính tắc để thực hiện bộ lọc IIR tổng quát có bậc M có ngõ vào x. Sau đó tính ngõ
ra với các thông số bộ lọc và ngõ vào như câu hỏi chuẩn bị 4. Lưu lại với tên
Bai_3_NHOMx_CB_5_IIR_Canonical.m ./.
Code matlab
% % % %
clc
clear
xn = [1, 2, -1, 1];
b= [2 , -3 , 0, 4];
a= [1 ,0.2, -0.3, 0, 0.5];
Lx=length(xn);
La = length(a);
Lb = length(b);
M = max(La,Lb);
Ly=Lx+M;

yn= zeros(1,Ly);
v = zeros(1,Lb);
w =zeros(1 , La);
X=[xn, zeros(1,M)];
for n=0 : Ly-1
i= n+1
v(1) = X(i);
w(1) = -a(2:end) * w(2:end).' + b*v.';
yn(i) = w(1);
for j= La: -1 : 2
w(j) = w(j -1);
end
for k= Lb: -1 : 2
v(k) = v(k -1);
end
end

kết quả

Câu hỏi chuẩn bị 6: Viết chương trình Matlab thực hiện giải thuật xử lý mẫu (dạng
nối tiếp) để thực hiện bộ lọc IIR dạng nối tiếp với K = 5 tầng của các bộ lọc IIR
bậc 2 với ma trận hệ số bộ lọc sos và ma trận trạng thái trung gian W có ký hiệu
như trên. (Để thuận tiện sv có thể cho ma trận sos, tín hiệu ngõ vào x(n) bất kỳ để
kiểm tra chương trình.) Lưu lại với tên Bai_3_NHOMx_CB_6_IIR_Cascade.m ./.
Code matlab
% % % %
clc
close all
xn = [1, 2, -1, 1];
sos = [1, 2, 3, 1, 4, 5; 6, 7, 8, 1, 9, 10; 1, 2, 3, 1,
4, 5; 6, 7, 8, 1, 9, 10; 1, 2, 3, 1, 4, 5];
b = sos(:,1:3);
a = sos(:,4:6);
W=zeros(size(b));
k=length(b);
for i=0:k
xn(1)=xn(i+1);
for n=0:k-1
W(n+1,1)=xn(n+1)-a(n+1,2)*W(n+1,2)-
a(n+1,3)*W(n+1,3);

y(n+1)=b(n+1,1)*W(n+1,1)+b(n+1,2)*W(n+1,2)+b(n+1,3)*W(n
+1,3);
W(n+1,3)=W(n+1,2);
W(n+1,2)=W(n+1,1);
xn(n+2)=y(n+1);
end
y(i+1)=y(k-1);
end

Câu hỏi chuẩn bị 7: Cho bộ lọc IIR có hàm truyền dạng nối tiếp như sau
 3  4 z 1  2 z 2   3  4 z 1  2 z 2 
H z   1 2   1 2 
1  0.4 z  0.5 z  1  0.4 z  0.5 z 
9  4 z 2  4 z 4
 ,
1  0.84 z 2  0.25 z 4
a. Xác định ma trận hệ số bộ lọc sos (A, B) và ma trận các biến trạng thái trung
gian W đối với bộ lọc trên.
b. Vẽ sơ đồ khối với bộ lọc dạng nối tiếp với các thông số trên.
c. Viết lưu đồ giải thuật xử lý mẫu cho bộ lọc trên.
d. Viết lưu đồ giải thuật xử lý mẫu cho bộ lọc trên.
e. Viết chương trình Matlab thực hiện giải thuật xử lý mẫu trên để tìm ngõ ra
của bộ lọc khi ngõ vào x(n) = [1, 2, -1, 1]. Lưu lại với tên
Bai_3_NHOMx_CB_7_IIR_Canonical.m ./.

a,b.
c,d.

e. Code matlab
% % % % % %
clc
close all
xn=[1,2,-1,1];
sos=[3 -4 2 1 -0.4 0.5;3 4 2 1 0.4 0.5;9 -4 4 1 0.84
0.25];
b = sos(:,1:3);
a = sos(:,4:6);
W=zeros(size(b));
k=length(b);
for i=0:k
xn(1)=xn(i+1);
for n=0:k-1
W(n+1,1)=xn(n+1)-a(n+1,2)*W(n+1,2)-
a(n+1,3)*W(n+1,3);

y(n+1)=b(n+1,1)*W(n+1,1)+b(n+1,2)*W(n+1,2)+b(n+1,3)*W(n
+1,3);
W(n+1,3)=W(n+1,2);
W(n+1,2)=W(n+1,1);
xn(n+2)=y(n+1);
end
y(i+1)=y(k-1);
end
kết quả

CHUẨN BỊ LÝ THUYẾT THÍ NGHIỆM


6. Code matlab
clc
clear

w = 0:pi/100:pi;
b= [1 , 0 , 0, 0,-0.0625];
a= [1 ,0 , -2.25];

[H_matlab, w] = freqz(a,b);
H_matlab_manitude = abs(H_matlab);
H_matlab_phase = angle(H_matlab);
subplot(1,2,1);
plot(w,H_matlab_manitude);
title('Amplitude Response');
subplot(1,2,2);
plot(w,H_matlab_phase);
title('Phase Response')
kết quả

You might also like