TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘITRƯỜNG ĐIỆN-ĐIỆN TỬ... Bài thí nghiệm số 1: Tín hiệu liên tụcI... Bài thí nghiệm số 3: Tích chập, biến đổi Fourier và lọc tín hiệu I.. Phép biến đổi Fourie
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN-ĐIỆN TỬ -
-BÁO CÁO THÍ NGHIỆM Tín hiệu và hệ thống
Giảng viên hướng dẫn: Phạm Văn Tuynh
Sinh viên thực hiện:
Phạm Ngọc Quyết 20222376 736421
Hà Nội 2023
Trang 2Bài thí nghiệm số 1: Tín hiệu liên tục
I Hàm bước nhảy đơn vị (unit step) và hàm dốc đơn vị (ramp)
Bài 1: Hàm bước nhảy đơn vị:
function x=u(t)
x=zeros(size(t));
x(t>=0)=1;
Bài 2: Hàm dốc đơn vị:
function x = r(t)
x = t.*u(t);
Bài 3: Đồ thị của các tín hiệu:
1, 5u(t-2)
t = -10:0.001:10;
x = 5*u(t-2);
plot(t,x)
Trang 32, 3r(t+5)
t = -10:0.001:10;
y = 3*r(t+5);
plot(t,y)
3, y(t) = 2r(t+5) - 5r(t) + 3r(t-2) + u(t-4)
t = -10:0.001:10;
y = 2*r(t+5)-5*r(t)+3*r(t-2)+u(t-4);
plot(t,y)
Trang 44, y(t) = sin(t)*[u(t+3) - u(t-3)]
t = -10:0.001:10;
y = sin(t).*(u(t+3)-u(t-3));
plot(t,y)
Bài 4: Sử dụng hàm ustep() và ramp() để vẽ 2 đồ thị:
1, Đồ thị 1:
t = -10:0.001:10;
plot(t,0.5*r(-abs(t)+4));
Trang 5axis([-10 10 -0.5 2])
2, Đồ thị 2:
t=-10:0.001:10;
y=0.5*r(-abs(t)+4)-u(abs(t)-8)+1;
plot(t,y)
II Tín hiệu chẵn, lẻ
Bài 1: Xây dựng hàm chẵn, lẻ:
Trang 6function [ye,yo] = evenodd(y)
% even/odd decomposition
% y: analog signal
% ye, yo: even and odd components
% USE [ye,yo] = evenodd(y)
% yr = fliplr(y);
ye = 0.5*(y + yr);
yo = 0.5*(y – yr);
Bài 2: Tìm hàm chẵn, lẻ của hàm:
y(t) = 2r(t+2,5) - 5r(t) + 3r(t-2) + u(t-4)
t = -10:0.001:10;
y=2*r(t+2.5) - 5*r(t) + 3*r(t-2) + u(t-4);
[ye,yo] = evenodd(y);
plot(t,yo);hold ;on
plot(t,ye);
plot(t,y); hold off;
legend('yo','ye' 'y', );
III Tổng của các tín hiệu tuần hoàn
t = -10:0.001:10;
w = pi/10;
x = 1 + 1.5*cos(2*pi*w*t) - 0.6*cos(4*w*t);
Trang 7t = -10:0.001:10;
w = pi/10;
x = 1 + 1.5*cos(6*pi*t) - 0.6*cos(4*w*t);
plot(t,x);
Trang 8IV Năng lượng, công suất của một tín hiệu
syms ;t
T=20;
u(t)=heaviside(t);
x=exp(-t).*cos(2*pi*t).*u(t);
f=(abs(x)).^2;
E=int(f, t, -T/2, T/2);
P=int(f, t, -T/2, T/2)/T;
E
E =2
P
P =2
Trang 9V Phép dịch, phép co dãn và phép đảo tín hiệu
t = -10:0.001:10;
plot(t, exp(-abs(t))); hold ;on
a = t-2;
plot(t, exp(-abs(a)));
b = t+2;
plot(t, exp(-abs(b)));
legend('x(t)' 'x(t-2)', ,'x(t+2)');
hold off;
t = -10:0.001:10;
plot(t, exp(-abs(t))); hold ;on
a = 2*t;
plot(t, exp(-abs(a)));
b = 0.5*t;
plot(t, exp(-abs(b)));
legend('x(t)' 'x(2t)', ,'x(0,5t)');
hold off;
Trang 10t = -10:0.001:10;
plot(t, exp(-abs(t))); hold ;on
a = -t;
plot(t, exp(-abs(a)));
legend('x(t)' 'x(-t)', );
hold off;
Trang 11Bài thí nghiệm số 2: Hàm tuyến tính
Bài 1: Tần số và nốt nhạc
Viết chương trình chơi bản nhạc CCGGAAG , FFEEDDC
Fs = 8000;
t=0:1/Fs:0.5;
Fc=262;Fd=294;Fe=330;Ff=349;Fg=392;Fa=440;Fb=494;Fj=0;
C=cos(2*pi*Fc*t);
D=cos(2*pi*Fd*t);
E=cos(2*pi*Fe*t);
F=cos(2*pi*Ff*t);
G=cos(2*pi*Fg*t);
A=cos(2*pi*Fa*t);
B=cos(2*pi*Fb*t);
Si=cos(2*pi*Fj*t);
song=[C C G G A A G Si Si F F E E D D C Si Si];
sound(song,Fs);
Bài 2: Fourier Series of a Trumpet
a Mô phỏng tín hiệu
t=linspace(0,1,44100);
F=494;
A=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0065 0.0020];
phi=[2.1299 1.6727 2.5454 0.6607 2.0390 2.1597 1.0467 1.8581
-2.3925];
x=zeros(1,length(t));
for k=1:9
x=A(k)*cos(2*pi*k*F.*t-phi(k))+x;
end
sound(x,44100);
Trang 12b Vẽ tín hiệu trong 3 chu kì
syms t x(t);
F=494;
A=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0065 0.0020];
phi=[2.1299 1.6727 2.5454 0.6607 2.0390 2.1597 1.0467 1.8581
-2.3925];
x=zeros(1,length(t));
for k=1:9
x=A(k)*cos(2*pi*k*F.*t-phi(k))+x;
end
fplot(x,[0,3/494]);
c Khi pha bằng 0
t=linspace(0,1,44100);
F=494;
A=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0065 0.0020];
x=zeros(1,length(t));
for k=1:9
x=A(k)*cos(2*pi*k*F.*t-phi(k))+x;
end
sound(x,44100);
Nhận xét: Pha thay đổi không ảnh hưởng đến âm thanh của tín hiệu
Trang 13Bài thí nghiệm số 3: Tích chập, biến đổi Fourier và lọc tín hiệu
I Tích chập và lọc tín hiệu âm thanh bằng bộ lọc thông thấp lý tưởng
[data,Fs]=audioread('female_voice.wav');
data=data(:,1)';
Ts=1/Fs;
sound(data,Fs);
t=-10:Ts:10;
wb=1500*2*pi;
ht=wb/(2*pi)*sinc(wb*t/(2*pi));
y=conv(data,ht,'same');
y=y/max(abs(y));
sound(y,Fs);
II Phép biến đổi Fourier và lọc tín hiệu bằng bộ lọc Butterworth bậc 5
1, Tạo các hàm
%FourierTransform.m
function [f,X]=FourierTransform(t,x )
ns=size(x,2); dt=t(2)-t(1) ;
N=2*ns; df=1/(N*dt);
xp=zeros(1,N) ; nns=sum(t<0);
xp(1:ns-nns)=x(nns+1:ns); xp(N-nns+1:N)=x(1:nns);
Xf=dt*fft(xp); n2=ceil(N/2) ;
if n2==N/2
X(1:n2-1)=Xf(n2+2:N); X(n2:N)=Xf(1:n2+1);
f=(-n2+1)*df:df:n2*df; no=n2;
else
X(1:n2-1)=Xf(n2+1:N); X(n2:N)=Xf(1:n2);
f=(-n2+1)*df:df:(n2-1)*df ;
end
%IfourierTransform.m
function [t,x]=IFourierTransform(f,X)
ns=length(X); df=f(2)-f(1);
N=ns; dt=1/(N*df);
Xp=zeros(1,N); Xp(1:ns)=X;
nns=sum(f<0);
Xpp(1:ns-nns)=Xp(nns+1:ns); Xpp(N-nns+1:N)=Xp(1:nns);
Trang 14xf=N*df*ifft(Xpp); n2=ceil(N/2);
if n2==N/2
x(1:n2-1)=xf(n2+2:N); x(n2:N)=xf(1:n2+1);
t=(-n2+1)*dt:dt:n2*dt;
else
x(1:n2-1)=xf(n2+1:N); x(n2:N)=xf(1:n2);
t=(-n2+1)*dt:dt:(n2-1)*dt;
end
Hàm main:
% main.m
load hum3hb;
x=hb; tf=(size(x,2)-1)*T;
t=0:T:tf;
[f,Xf]=FourierTransform(t,hb);
figure(1);
subplot(2,1,1)
plot(t,x,'linewidth',1);
grid; axis([0 2.5 -0.5 1.5]);
xlabel('t (sec)');ylabel('x(t)');
subplot(2,1,2)
plot(f,abs(Xf),'linewidth',1);
grid; axis([-150 150 0 0.12]);
xlabel('f (Hz)');ylabel('|X(f)|');
Trang 15Nhận xét:
1 Đồ thị thời gian là một hàm tuần hoàn có một đỉnh vượt trội hơn phần còn lại trong một chu kì
2 Đồ thị phổ, ta thấy tín hiệu tập trung ởmiền tần số 0Hz đến 60Hz, nhiễu xuất hiện ởcác khu vực bên ngoài
h=(568*exp(-300*t)-485*exp(-243*t).*cos(176*t)
+668*exp(-243*t).*sin(176*t)-83*exp(-93*t).*cos(285*t)
-255*exp(-93*t).*sin(285*t));
[f,Hf]=FourierTransform(t,h);
figure(2)
subplot(2,2,[1 2])
plot(t,h,'linewidth',1); grid;
axis([0 0.5 -50 150]);
xlabel('t (sec)'); ylabel('h(t)');
subplot(2,2,3)
plot(f,abs(Hf),'k','linewidth',1); grid;
axis([-150 150 0 1.2]);
xlabel('f (Hz)'); ylabel('|H(j2\pi f)|');
subplot(2,2,4)
angleH=unwrap(angle(Hf))+2*pi;
plot(f,angleH,'k','linewidth',1); grid;
axis([-150 150 -10 10]);
xlabel('f (Hz)'); ylabel('\angle H(f)');
1 Bộ lọc đã dùng là bộ lọc thông thấp
2 Miền tần số lọc là từ 0-100Hz
Yf=Xf.*Hf;
figure(3)
Trang 16subplot(2,1,1)
plot(f,abs(Yf),'r','linewidth',1); grid;
axis([-150 150 0 0.12]);
xlabel('f (Hz)'); ylabel('|Y(f)|');
[t2,y]=IFourierTransform(f,Yf);
subplot(2,1,2)
plot(t2,y,'r','linewidth',1); grid;
axis([0 2.5 -0.5 1.5]);
xlabel('t (sec)'); ylabel('y(t)');
Nhận xét:
1 Khi sử dụng bộ lọc, ta thấy tín hiệu đã trở nên liên tục hơn, các nhiễu đã được loại bỏ trên miền tần số
2 Khi so sánh giữa hình 1 và hình 3, ta thấy miền tần số sau khi lọc chỉ còn lại vùng tín hiệu cần thiết đó là vùng khoảng từ 0 đến 60 Hz bởi vì đối với bộ lọc, các nhiễu bên ngoài vùng 0-60Hz đã bị triệt tiêu và ở ngoài vùng 100Hz nó đã
bị triệt tiêu hoàn toàn