Professional Documents
Culture Documents
Báo cáo bài thí nghiệm 3
Báo cáo bài thí nghiệm 3
Kết quả:
Đơn vị 10 −6
Lưu ý: Theo yêu cầu trong file hướng dẫn tất cả code bên dưới được viết trong
cùng 1 chương trình Matlap chỉ được tách ra để làm báo cáo:
Thực hiện bộ lọc trên Matlab
Để thực hiện việc tính toán ngõ ra của bộ lọc, ta có thể sử dụng định nghĩa
với là đáp ứng xung vừa tìm được sử dụng công cụ
sptool ở trên và là mẫu tín hiệu ngõ vào. Do đó có thể sử dụng giải thuật
xử lý mẫu để thực hiện bộ lọc.
Chương trình Matlab thực hiện giải thuật xử lý mẫu cho bộ lọc này như sau:
% Matlab code
subplot(1,2,2);
plot(0:1/Fs:(Ly-1)/Fs,y);
xlabel('t(s)');
ylabel('y(t)')
subplot(1,2,2);
plot(0:1/Fs:(Ly-1)/Fs,y);
xlabel('t(s)');
ylabel('y(t)')
Ngõ vào xn và ngõ ra yn:
Thực hiện tính phổ của ngõ vào (x) và ngõ ra (y) của bộ lọc, sau đó vẽ đồ thị
phổ biên độ của ngõ vào và ngõ ra. Nhận xét.
Chương trình Matlap:
%% Ve pho mien tan so
figure(5)
X_pho = fft(x,Lx);
Y_pho = fft(y,Ly);
X_magnitude = abs(X_pho);
Y_magnitude = abs(Y_pho);
subplot(1,2,1)
stem((0:Lx/2-1)*Fs/Lx,X_magnitude(1:Lx/2)/Lx)
xlabel("Frequency(Hz)")
ylabel("Amplitude_X")
subplot(1,2,2)
stem((0:Ly/2-1)*Fs/Ly,Y_magnitude(1:Ly/2)/Ly)
xlabel("Frequency(Hz)")
ylabel("Amplitude_Y")
Phổ miền tần số:
2. Tạo một mẫu tín hiệu x(n) là tổng của các tín hiệu sine có tần số từ 100 Hz đến
3900 Hz có bước nhảy 100Hz và tần số lấy mẫu fs = 8000 Hz, sau đó cho tín hiệu
xn qua bộ lọc để tính giá trị ngõ ra y(n). Dùng chương trình Matlab để vẽ phổ
biên độ của tín hiệu ngõ vào và ngõ ra. Giải thích tại sao có dạng phổ này?
Chương trính Matlap:
%% Tao mau tin hieu tu 100-->3900 va ve pho ngo vao, ngo ra
figure(6)
F=100:100:3900;
xa=0;
b=0;
Lf=length(F);
for i=1:Lf
xa=xa+sin(2*pi*F(1,i)*t);
end
Lxa=length(xa);
M=length(h)-1;
k4=Lxa+M;
k3=length(xa);
k=length(h);
ya=zeros(1,k4);
xan=zeros(1,k4);
t2=k3+1:1:k4;
xan=[xa zeros(size(t2))];
w=zeros(1,k);
for i=1:k4
w(1,1)=xan(1,i);
for ii=1:k
b=b+h(1,ii)*w(1,ii);
end
ya(1,i)=b;
b=0;
for e=k:-1:2
w(1,e)=w(1,e-1);
end
end
Lya=length(ya);
Ya=fft(ya,Lya);
Xa=fft(xa,Lxa);
Ya_mag=abs(Ya);
Xa_mag=abs(Xa);
subplot(1,2,1);
stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa);
xlabel('Hz');
ylabel('Amp');
subplot(1,2,2);
stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya);
xlabel('Hz');
ylabel('Amp');
Phổ của tín hiệu ngõ vào và ngõ ra:
Nhận xét:
-Bộ lọc nhóm tạo được đáp ứng đúng với yêu cầu đã đề ra.
-Ở phổ của ngõ ra vì đây là bộ lọc chắn dải có fc1=2500 và fc2=2900 nên phôt
của ngõ ra tại vùng tần số này có giá trị = 0.
Thí nghiệm 2: Thiết kế, thực hiện và kiểm tra bộ lọc FIR thông dải bằng phương
pháp Kaiser Window với các thông số như sau:
• Chiều dài đáp ứng xung: 63
• Tần số cắt: 1500 và 2000 Hz.
• Giá trị của = 5
• Tần số lấy mẫu: 8 kHz.
1. Đáp ứng tần số của bộ lọc thiết kế trên công cụ SPTool của Matlab:
Kết quả:
2. Gía trị các hệ số đáp ứng xung của bộ lọc trên SPTool của Matlab:
Đơn vị 10 −6
3. Đáp ứng biên độ-tần số và pha-tần số của bộ lọc thực hiện trên Matlab:
Chương trình Matlap:
clc ;
clear all;
h=[-2.85877068898113e-05 0.000394562779517746 0.000482415151186277 -
0.00105113297051336 -0.00189772220034618 0.00123847075719520
0.00422178934088143 -6.96498471681547e-18 -0.00634984952083661 -
0.00281401319382511 0.00657438607311026 0.00563669025688154 -0.00409743140499819
-0.00549529693090259 0.000689341578283886 -2.57459937661280e-18
-0.000925970213620167 0.00993328594326822 0.0100031738537173 -
0.0186911150995596 -0.0298467661360885 0.0176765750739977 0.0559583752702576 -
2.92213910723154e-17 -0.0776792890820932 -0.0343511174411251
0.0827216761354691 0.0763793958993219 -0.0639040870215645 -
0.111085813544049 0.0240844372270715 0.124538753055583 0.0240844372270715 -
0.111085813544049 -0.0639040870215645 0.0763793958993219 0.0827216761354691 -
0.0343511174411251 -0.0776792890820932 -2.92213910723154e-17
0.0559583752702576 0.0176765750739977 -0.0298467661360885 -
0.0186911150995596 0.0100031738537173 0.00993328594326822 -0.000925970213620167
-2.57459937661280e-18 0.000689341578283886 -0.00549529693090259
-0.00409743140499819 0.00563669025688154 0.00657438607311026 -
0.00281401319382511 -0.00634984952083661 -6.96498471681547e-18
0.00422178934088143 0.00123847075719520 -0.00189772220034618 -
0.00105113297051336 0.000482415151186277 0.000394562779517746 -
2.85877068898113e-05];
Fs = 8000
N = length(h)
% % % biên độ-tần số và pha-tần số
figure(1);
Hk = fft(h,N)
Hk_magnitude = abs(Hk)
Hk_phase = angle(Hk)
subplot(1,2,1)
stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N)
xlabel("Frequency(Hz)")
ylabel("Amplitude")
subplot(1,2,2)
stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N)
xlabel("Frequency(Hz)")
ylabel("Phase")
Kết quả:
4. Kiểm tra bộ lọc với ngõ vào tín hiệu sin đa tần có các thành phần tần số 1000
Hz và 1700 Hz:
Chương trình Matlap:
%% Tao mau tin hieu mien thoi gian
figure(2)
Ts = 1/Fs
t = 0 : Ts : 0.05 - Ts
xn1= cos(2000*pi*t)
xn2= cos(3400*pi*t)
xn = xn1 + xn2
x = xn1 + xn2 + xn
subplot(1,2,1)
plot(t,x)
xlabel('t(s)')
ylabel('x(t)')
subplot(1,2,2);
plot(0:1/Fs:(Ly-1)/Fs,y);
xlabel('t(s)');
ylabel('y(t)')
Kết quả:
5. Kiểm tra bộ lọc với ngõ vào tín hiệu tổng của các tín hiệu sine tần số từ 100 –
3900 Hz:
Chương trình Matlap:
%% Tao mau tin hieu tu 100-->3900 va ve pho ngo vao, ngo ra
figure(4);
F=100:100:3900;
xa=0;
b=0;
Lf=length(F);
for i=1:Lf
xa=xa+sin(2*pi*F(1,i)*t);
end
Lxa=length(xa);
M=length(h)-1;
k4=Lxa+M;
k3=length(xa);
k=length(h);
ya=zeros(1,k4);
xan=zeros(1,k4);
t2=k3+1:1:k4;
xan=[xa zeros(size(t2))];
w=zeros(1,k);
for i=1:k4
w(1,1)=xan(1,i);
for ii=1:k
b=b+h(1,ii)*w(1,ii);
end
ya(1,i)=b;
b=0;
for e=k:-1:2
w(1,e)=w(1,e-1);
end
end
Lya=length(ya);
Ya=fft(ya,Lya);
Xa=fft(xa,Lxa);
Ya_mag=abs(Ya);
Xa_mag=abs(Xa);
subplot(1,2,1);
stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa);
xlabel('Hz');
ylabel('Amp');
subplot(1,2,2);
stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya);
xlabel('Hz');
ylabel('Amp');
Kết quả:
Nhận xét:
-Bộ lọc nhóm tạo được đáp ứng đúng với yêu cầu đã đề ra.
-Ở phổ của ngõ ra vì đây là bộ lọc chắn dải có fc1=1500 và fc2=2000 nên phổ
của ngõ ra tại vùng tần số này có giá trị = 1
Thí nghiệm 3: Thiết kế, thực hiện và kiểm tra bộ lọc FIR thông cao bằng
phương pháp Kaiser Window với các thông số như sau:
Thiết kế Sptool:
• Chiều dài đáp ứng xung: 63
• Tần số cắt: 2200 Hz.
• Giá trị của = 4
• Tần số lấy mẫu: 8 kHz.
1. Đáp ứng tần số của bộ lọc thiết kế dùng SPTool trên MATLAB:
subplot(1,2,2);
plot(0:1/Fs:(Ly-1)/Fs,y);
xlabel('t(s)');
ylabel('y(t)')
5. Kiểm tra bộ lọc với ngõ vào tín hiệu tổng của các tín hiệu sin tần số 100 – 3900
Hz:
Chương trình Matlap:
%% Tao mau tin hieu tu 100-->3900 va ve pho ngo vao, ngo ra
figure(4);
F=100:100:3900;
xa=0;
b=0;
Lf=length(F);
for i=1:Lf
xa=xa+sin(2*pi*F(1,i)*t);
end
Lxa=length(xa);
M=length(h)-1;
k4=Lxa+M;
k3=length(xa);
k=length(h);
ya=zeros(1,k4);
xan=zeros(1,k4);
t2=k3+1:1:k4;
xan=[xa zeros(size(t2))];
w=zeros(1,k);
for i=1:k4
w(1,1)=xan(1,i);
for ii=1:k
b=b+h(1,ii)*w(1,ii);
end
ya(1,i)=b;
b=0;
for e=k:-1:2
w(1,e)=w(1,e-1);
end
end
Lya=length(ya);
Ya=fft(ya,Lya);
Xa=fft(xa,Lxa);
Ya_mag=abs(Ya);
Xa_mag=abs(Xa);
subplot(1,2,1);
stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa);
xlabel('Hz');
ylabel('Amp');
subplot(1,2,2);
stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya);
xlabel('Hz');
ylabel('Amp');
Kết quả:
Thí nghiệm 4: Thiết kế, thực hiện và kiểm tra một bộ lọc FIR multiband gồm
63 hệ số, tần số lấy mẫu là 10 kHz, dải thông [500 1000] Hz và [1500 2000] Hz,
độ rộng dải chuyển tiếp 100 Hz. Bộ lọc cần thiết kế có đáp ứng tần số như sau:
1.2
0.8
0.6
0.4
0.2
0
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Kết quả:
5. Kiểm tra bộ lọc với ngõ vào tín hiệu sin đa tần có các thành phần tần số 500
Hz, 750 Hz và 1750 Hz:
Chương trình Matlap:
%% Dap ung tan so cua bo loc
figure(2);
Hk = fft(h,N)
Hk_magnitude = abs(Hk)
Hk_phase = angle(Hk)
subplot(1,2,1)
stem((0:N/2-1)*Fs/N,Hk_magnitude(1:N/2)/N)
xlabel("Frequency(Hz)")
ylabel("Amplitude")
subplot(1,2,2)
stem((0:N/2-1)*Fs/N,Hk_phase(1:N/2)/N)
xlabel("Frequency(Hz)")
ylabel("Phase")
subplot(1,2,2);
plot(0:1/Fs:(Ly-1)/Fs,y);
xlabel('t(s)');
ylabel('y(t)')
Kết quả:
6. Kiểm tra bộ lọc với ngõ vào tín hiệu tổng của các tín hiệu sine tần số từ 100 –
3900 Hz:
Chương trình Matlap:
%% Tao mau tin hieu tu 100-->3900 va ve pho ngo vao, ngo ra
figure(5);
F=100:100:3900;
xa=0;
b=0;
Lf=length(F);
for i=1:Lf
xa=xa+sin(2*pi*F(1,i)*t);
end
Lxa=length(xa);
M=length(h)-1;
k4=Lxa+M;
k3=length(xa);
k=length(h);
ya=zeros(1,k4);
xan=zeros(1,k4);
t2=k3+1:1:k4;
xan=[xa zeros(size(t2))];
w=zeros(1,k);
for i=1:k4
w(1,1)=xan(1,i);
for ii=1:k
b=b+h(1,ii)*w(1,ii);
end
ya(1,i)=b;
b=0;
for e=k:-1:2
w(1,e)=w(1,e-1);
end
end
Lya=length(ya);
Ya=fft(ya,Lya);
Xa=fft(xa,Lxa);
Ya_mag=abs(Ya);
Xa_mag=abs(Xa);
subplot(1,2,1);
stem((0:Lxa/2-1)*Fs/Lxa,Xa_mag(1:Lxa/2)/Lxa);
xlabel('Hz');
ylabel('Amp');
subplot(1,2,2);
stem((0:Lya/2-1)*Fs/Lya,Ya_mag(1:Lya/2)/Lya);
xlabel('Hz');
ylabel('Amp');
Phổ của tín hiệu ngõ vào và ngõ ra: