Professional Documents
Culture Documents
BuiDinhTien 1915467 CB 3
BuiDinhTien 1915467 CB 3
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 ./.
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ả
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ả
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ả