THIẾT KẾ VÀ THỰC HIỆN BỘ LỌC IIR TRÊN MATLAB Giảng viên hướng dẫn: Huỳnh Văn Phận Họ tên sinh viên: Nguyễn Trần Tú Anh MSSV: 1910770 Lớp: L06... Vẽ sơ đồ khối dạng trực tiếp 1 của bộ lọc
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ
- -BÀI CHUẨN BỊ THÍ NGHIỆM XỬ LÝ SỐ TÍN
HIỆU BÀI 4 THIẾT KẾ VÀ THỰC HIỆN BỘ LỌC IIR
TRÊN MATLAB Giảng viên hướng dẫn: Huỳnh Văn Phận
Họ tên sinh viên: Nguyễn Trần Tú Anh
MSSV: 1910770 Lớp: L06
Trang 2Câu 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
Code:
clc;
close all;
a = input('Nhap he so mau:');
b = input('Nhap he so tu:');
M = length(a);
Lv= length(b);
xn= input('Nhap gia tri ngo vao:');
w = zeros(1,M+1);
L = length(xn);
v = zeros(1,L);
for i = 1 : L
v(1) = xn(i);
for j = 1 : M
w(1) = w(1)-a(j).*w(j+1);
end
for r = 1 : Lv
w(1) = w(1)+b(r).*v(r);
end
y(i) = w(1);
for k = L : -1 : 2
v(k) = v(k-1);
end
for t = M+1 : -1 : 2
w(t) = w(t-1);
end
end
Trang 3Kết quả mô phỏng:
Câu 4 Cho bộ lọc IIR có hàm truyền
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]
Trang 5Code Matlab:
clc;
close all;
a=[2 -3 0 4];
b=[1 0.2 -0.3 0 0.5];
[H, w] = freqz(a,b);
H_magnitude = abs(H);
plot(w/pi,H_magnitude);
xlabel('w');
ylabel('Amplitude');
title('Dap ung tan so');
Kết quả mô phỏng:
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 x n ( ) = [ 1, 2, 1,1 − ]
Kiểm tra tính chính xác với kết quả tính được ở ý 1
Trang 6Code Matlab:
clc;
close all;
a = [1 0.2 -0.3 0 0.5];
b = [2 -3 0 4];
M = length(a);
Lv= length(b);
xn= [1 2 -1 1];
w = zeros(1,M+1);
L = length(xn);
v = zeros(1,L);
for i = 1 : L
v(1) = xn(i);
for j = 1 : M
w(1) = w(1)-a(j).*w(j+1); end
for r= 1 : Lv
w(1) = w(1)+b(r).*v(r);
end
y(i) = w(1);
for k = L : -1 : 2
v(k) = v(k-1);
end
for t = M+1 : -1 : 2
w(t) = w(t-1);
end
end
Kết quả mô phỏng:
Kết quả tính ở ý 2 giống với ý 1.
Trang 7Câu 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.
Code Matlab:
clc;
close all;
a = [1 0.2 -0.3 0 0.5];
b = [2 -3 0 4];
M = length(a);
Lv= length(b);
xn= [1 2 -1 1];
w = zeros(1,M+1);
Lx= length(xn);
y = zeros(1,Lx);
for i = 1 : Lx
for j = 2 : M
w(1) = xn(i)-a(j).*w(j+1);
end
for r = 1 : Lv
y(i)=y(i)+b(r).*w(r);
end
for t = M : -1 : 2
w(t) = w(t-1);
end
end
Kết quả mô phỏng:
Trang 8Câu 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, sinh viên 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)
Code Matlab:
clc
clear
K=input('So tang cua bo loc:');
B=zeros(K,3);
A=zeros(K,3);
for i=1:K
fprintf('cot:%d\n',i);
for i1=1:3
b=input('Gia tri cua tu:');
B(i,i1)=b;
end
end
for i=1:K
fprintf('cot:%d\n',i);
for i1=1:3
a=input('Gia tri cua mau:');
A(i,i1)=a;
end
end
w=zeros(K,3);
k=input('nhap cot:');
x=zeros(1,k);
for i=1:k
g=input('Nhap gia tri cho x:');
x(1,i)=g;
end
k1=input('So mau can tinh cua y:');
while k1<k
k1=input('So mau can tinh cua y:');
end
y=zeros(1,k1);
d=zeros(1,K);
xn=zeros(1,k1);
c=zeros(1,k1);
t=k+1:1:k1;
xn=[x zeros(size(t))];
for i=1:k1
c(1,1)=xn(1,i);
for i1=1:K
w(i1,1)=c(1,i1)-A(i1,2)*w(i1,2)-A(i1,3)*w(i1,3);
d(1,i1)=B(i1,1)*w(i1,1)+B(i1,2)*w(i1,2)+B(i1,3)*w(i1,3);
w(i1,3)=w(i1,2);
w(i1,2)=w(i1,1);
Trang 9c(1,i1+1)=d(1,i1);
end
y(1,i)=d(1,K);
end
Kết quả mô phỏng:
Câu 7 Cho bộ lọc IIR có hàm truyền nối tiếp
Trang 101 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.
Trang 112 Vẽ sơ đồ khối với bộ lọc dạng nối tiếp với các thông số trên.
3 Viết lưu đồ giải thuật xử lý mẫu cho bộ lọc trên.
Trang 124 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]
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 ii=0:K
xn(1)=xn(ii+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(ii+1)=y(K-1);
end
Kết quả mô phỏng:
Trang 131 CHUẨN BỊ LÝ THUYẾT THÍ NGHIỆM
1.2 Bộ lọc IIR
Cho một bộ lọc có hàm truyền như sau:
2
4 25
0 1
5 )
−
− +
=
z z
z H
Trang 176 Vẽ đáp ứng biên độ - tần số và pha - tần số của bộ lọc?
7 Xác định đặc tính của bộ lọc?
Bộ lọc thông dải.