Trang 1 ĐẠI HỌC BÁCH KHOA HÀ NỘITRƯỜNG ĐIỆN – ĐIỆN TỬ Trang 2 BÀI 1:TÍN HIỆU LIÊN TỤCI-Hàm bước nhảy đơn vịunit step và hàm dốc đơn vịrampCác hàm sử dụng:function y=ustepty=zerossizet;%
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ
BÁO CÁO THÍ NGHIỆM EE2000-TÍN HIỆU VÀ HỆ THỐNG
HỌC KỲ 20221
Họ và tên: Hà Ngọc Sơn
MSSV:20210753
Lớp:Tín hiệu và hệ thống
Mã lớp:724986
Hà Nội, 2/2023
Trang 2BÀI 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)
Các hàm sử dụng:
function y=ustep(t)
y=zeros(size(t));%tạo ma trận 0 với kích thước ma trận t hàng 2 cột
for i=1:size(t,2)
if t(i)<0 y(i)=0;
else y(i)=1;
end
end
end
function y=uramp(t)
y = zeros(size(t));
for i=1:size(t,2)
if t(i)<0 y(i)=0;
else y(i)= t(i);
end
end
end
Bài 1:
-Chương trình câu lệnh:
t =linspace(-5,5,1000); %chia khoảng [-5,5] thành 1000 khoảng y=ustep(t);
plot(t,y)
axis([-5 5 -1 2]); %căn chỉnh đồ thị,chia lại các trục tọa độ
title('unit step signal');
-Đồ thị tín hiệu:
Trang 3Bài 2 :
-Chương trình câu lệnh:
t =linspace(-5,5,1000);
y= uramp(t);
figure; %Tạo mới,hiện hình ảnh đồ thị chọn
plot(t,y);
title('ramp signal');
-Đồ thị tín hiệu:
Bài 3:
-Chương trình câu lệnh:
t =linspace(-10,10,1000);
x1=5*ustep(t-2);
x2=3*uramp(t+5);
x3=2*uramp(t+2.5)-5*uramp(t)+3*uramp(t-2)+ustep(t-4);
x4=sin(t).*(ustep(t+3)-ustep(t-3));
figure;
subplot(2,2,1); plot(t,x1);title('5u(t-2)');
%subplot:Chia cửa sổ đồ họa thành 4 vùng và hiển thị đồ thị 1 trên vùng 1 subplot(2,2,2); plot(t,x2);title('3r(t+5)');
subplot(2,2,3); plot(t,x3);title('2r(t+2.5)-5r(t)+3r(t-2)+u(t-4)');
subplot(2,2,4); plot(t,x4);title('y(t)=sint*[u(t+3)-u(t-3)]');
-Đồ thị tín hiệu:
Trang 4Bài 4:
-Chương trình câu lệnh:
figure;
x5 = 0.5*uramp(t+4)-uramp(t)+0.5*uramp(t-4);
x6 = ustep(t+8)+0.5*uramp(t+4)-uramp(t)+0.5*uramp(t-4)-ustep(t-8); plot(t,x5); axis([-10 10 -0.5 2]); grid on;
-Đồ thị tín hiệu trên:
Trang 5-Chương trình câu lệnh:
figure;
x5 = 0.5*uramp(t+4)-uramp(t)+0.5*uramp(t-4);
x6 = ustep(t+8)+0.5*uramp(t+4)-uramp(t)+0.5*uramp(t-4)-ustep(t-8); plot(t,x6,'LineWidth',1.5); xlim([-10 10]); grid on;
%xlim:giá trị lớn nhất và nhỏ nhất trên trục x
%grid on:hiển thị lưới tọa độ
-Đồ thị tín hiệu trên:
II-Tín hiệu chẵn, lẻ
Các hàm sử dụng:
function [ye,yo] = evenodd(y)
yr = fliplr(y);
ye=0.5*(y+yr);
yo=0.5*(y-yr);
end
Bài 1:
function [ye,yo] = evenodd(y)
yr = fliplr(y);
ye=0.5*(y+yr);
yo=0.5*(y-yr);
end
Bài 2:
-Chương trình câu lệnh:
y=2*uramp(t+2.5)-5*uramp(t)+3*uramp(t-2)+ustep(t-4);
[ye,yo]=evenodd(y);
Trang 6plot(t,y,'m-',t,ye,'r ',t,yo,'k-.');
grid on;
xlim([-10 10]);
legend('y','y_{even}','y_{odd}'); %thêm chú thích
-Đồ thị tín hiệu:
III-Tổng của các tín hiệu tuần hoàn:
-Chương trình câu lệnh:
t = linspace(-10,10,1000);
omega= pi/10;
x1 = 1+1.5*cos(2*pi*omega*t)-0.6*cos(4*omega*t); x2 = 1+1.5*cos(6*pi*t)-0.6*cos(4*omega*t);
figure;
subplot(1,2,1); plot(t,x1); title('x_1(t)');
subplot(1,2,2); plot(t,x2); title('x_2(t)');
-Đồ thị tín hiệu:
Trang 7-Trả lời câu hỏi:
1 ( ) 1 1,5co s(2 0 6 ,cos(4 0 ) 0 )
với 0 10
1 ( ) 1 1,5 11 ( ) 0, 6 12 ( )
x t x t x t
+) x11 ( )t
là hàm tuần hoàn với chu kì 1 0
2
+) x12 ( )t
là hàm tuần hoàn với chu kì 0
2
2 5 4
+) 2
1 2
T
không phải số hữu tỉ nên x t1 ( )
không phải tín hiệu tuần hoàn
0
2 ( ) 1 1,5co s(6 c os( 6 , 0 4 ) )
với 0 10
1
2 ( ) 1 1,5 2 ( ) 0,6 22 ( )
x t x t x t
+) x21 ( )t
là hàm tuần hoàn với chu kì 1
+) x22 ( )t
là hàm tuần hoàn với chu kì 2 0
2 5 4
+)
1
2
1 15
T
T
nên x2 ( )t
là hàm tuần hoàn với chu kì T 15T1 T2 5
(s)
Trang 8III-Năng lượng,công suất của một tín hiệu:
syms t x
x = exp(-t)*cos(2*pi*t)*heaviside(t);
%Năng lượng của tín hiệu
E = int(x^2,-10,10)
% E=(exp(-20)*(2*pi^2 + 1)*(exp(20) - 1))/(2*(4*pi^2 + 1))
%Công suất của tín hiệu
P = 1/20*int(x^2,-10,10)
% P=(exp(-20)*(2*pi^2 + 1)*(exp(20) - 1))/(40*(4*pi^2 + 1))
%Đánh giá xấp xỉ
E = double(E)
E = 0.2562
P = double(P)
P=0.0128
IV-Phép dịch,phép co giãn và phép đảo tín hiệu:
Bài 1:
-Chương trình câu lệnh:
syms t
x = exp(-abs(t));
figure;
fplot(x,[-10, 10]); hold on
%fplot:vẽ đường cong x(t)
%hold on: vẽ nhiều đường con trên cùng 1 đồ thị
x1 = subs(x,t-2); fplot(x1,[-10,10]); %x(t-2)
%subs:thay thế số vào biến tượng trưng trong biểu thức sử dụng biến tượng trưng
x2 = subs(x,t+2); fplot(x2,[-10,10]); %x(t+2)
legend('x(t)','x(t-2)','x(t+2)');
-Đồ thị tín hiệu:
Trang 9Bài 2:
-Chương trình câu lệnh:
syms t
x = exp(-abs(t));
figure;
fplot(x,[-10, 10]); hold on
x1 = subs(x,2*t); fplot(x1,[-10,10]); %x(2t)
x2 = subs(x,0.5*t); fplot(x2,[-10,10]); %x(2t)
legend('x(t)','x(2t)','x(0,5t)');
-Đồ thị tín hiệu:
Trang 10Bài 3:
-Chương trình câu lệnh:
syms t
x = exp(-abs(t));
figure;
fplot(x,[-10, 10]); hold on
x1 = subs(x,-t); fplot(x1,[-10,10]); %x(-t)
legend('x(t)','x(-t)');
-Đồ thị tín hiệu:
Trang 11BÀI 2:HÀM TUYẾN TÍNH
Bài 1: Tần số và nốt nhạc
%Chơi 1 note
% playing and plotting a pure tone
T = 2; % time to play the note is 2 sec
Fs = 8000; % sampling frequency is 8000 Hz
t=0:1/Fs:T; % vector of time instants
Amp = 1; % amplitude of the tone
ph=0; % phase of the tone
fb = 494; % frequency of middle B
N=300;
figure;
x = Amp*sin(2*pi*fb*t+ph); % vector x contains the values of
% the sinusoidal of frequency fb
% try with x = Amp*exp(-t).*sin(2*pi*fb*t+ph);
plot(t(1:300),x(1:300));
% play the note
sound(x,Fs);
Đồ thị tín hiệu:
Trang 12% program to play the ABC song with pure tone
%clf reset
% MUSICAL SCALE
s=2^(1/12);
R=0; % This is a rest
A0=110;
A0s=A0*s;
B0=A0s*s;
C0=B0*s;
C0s=C0*s;
D0=C0s*s;
D0s=D0*s;
E0=D0s*s;
F0=E0*s;
F0s=F0*s;
G0=F0s*s;
G0s=G0*s;
A=220;
As=A*s;
B=As*s;
C=B*s; % Middle C
Cs=C*s;
D=Cs*s;
Ds=D*s;
E=Ds*s;
F=E*s;
Fs=F*s;
G=Fs*s;
Gs=G*s;
A2=440;
A2s=A2*s;
B2=A2s*s;
C2=B2*s;
C2s=C2*s;
D2=C2s*s;
Trang 13Fs=8000;
t=0:1/Fs:0.6;
t2=0:1/Fs:1.2;
N=300;
A=2;
R = zeros(size(t));
nC=A*exp(-0.5*t).*cos(2*pi*C*t);
nC2=A*exp(-0.5*t2).*cos(2*pi*C*t2);
nG=A*exp(-0.5*t).*cos(2*pi*G*t);
nGC=A*exp(-0.5*t).*cos(2*pi*G*t);
nGC2=A*exp(-0.5*t2).*cos(2*pi*G*t2);
nG2=A*exp(-0.5*t2).*cos(2*pi*G*t2);
nA=A*exp(-0.5*t).*cos(2*pi*A2*t);
nF=A*exp(-0.5*t).*cos(2*pi*F*t);
nE=A*exp(-0.5*t).*cos(2*pi*E*t);
nD=A*exp(-0.5*t).*cos(2*pi*D*t);
nDG2=A*exp(-0.5*t2).*cos(2*pi*D*t2);
x=[nC,nC,nGC,nG,nA,nA,nGC2,nF,nF,nE,nE,nD,nD,nC2,
nG,nG,nF,nF,nE,nE,nDG2,nG,nG,nF,nF,nE,nE,nDG2,
nC,nC,nGC,nG,nA,nA,nGC2,nF,nF,nE,nE,nD,nD,nC2];
sound(x,Fs);
Bài 2: Fourier Series of a Trumpet
figure;
t = linspace(0,1,44100);F=494;
C=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0045 0.0020]; TH=[-2.13 1.67 -2.545 661 -2.039 2.16 -1.0467 1.858 -2.39];
x = C*cos(2*pi*F*[1:9]'*t-TH'*ones(1,44100));
subplot(1,2,1); plot(t(1:200),x(1:200))
axis tight, grid on
sound(x,44100) %sound của tín hiệu trumpet
%Trường hợp theta = 0 -> Bỏ theta đi
t = linspace(0,1,44100);F=494;
C=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0045 0.0020]; Th=zeros(1,9);
x = C*cos(2*pi*F*[1:9]'*t);
subplot(1,2,2); plot(t(1:200),x(1:200))
axis tight, grid on
sound(x,44100) %sound khi theta = 0
Trang 14Đồ thị tín hiệu:
Trang 15BÀI 3:TÍCH CHẬP,PHÉ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ự 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);
xf=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;
2 Lọc tín hiệu điện tim
Câu hỏi 1: Chạy chương trình main.m và nhận xét về đồ thị thời gian của tín hiệu điện tim và phổ của nó
Trang 16% 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)|');
Tín hiệu điện tim là tín hiệu tuần hoàn
Nhiễu tập trung ở quanh vùng f=0 Hz, nhiễu cũng có ở vùng f tần số cao
Câu hỏi 2: Nhận xét về bộ lọc đã dùng
h=(568*exp(-300*t)-485*exp(-243*t).*cos(176*t)
Trang 17plot(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)');
Bộ lọc đã dùng là bộ lọc thông thấp
Vùng tần số bộ lọc cho đi qua là từ 0 Hz đến 100 Hz
Câu hỏi 3: Nhận xét về tác dụng của bộ lọc
Yf=Xf.*Hf;
figure(3)
subplot(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)
Trang 18plot(t2,y,'r','linewidth',1); grid;
axis([0 2.5 -0.5 1.5]);
xlabel('t (sec)'); ylabel('y(t)');
Nhận xét: Bộ lọc có tác dụng khử nhiễu tần số cao trong máy ghi điện tim, ở Hình
3 nhiễu đã giảm so với Hình 1