Tải bản đầy đủ (.docx) (17 trang)

BCB 3 TN XLSTH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.2 MB, 17 trang )

ĐẠ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


Câ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 qt 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


Kế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]



Code 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
được ở ý 1

x ( n ) = [ 1, 2, −1,1]

. Kiểm tra tính chính xác với kết quả tính


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);
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.


Câ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:


Câ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 k1k1=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);


c(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


1.

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.


2.


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.


4.

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:


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

1.2. Bộ lọc IIR
Cho một bộ lọc có hàm truyền như sau:
H ( z) =

5
4

−2
1 + 0.25 z
1 − 0.25 z −2





6. 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.




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×