ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆ – N ĐIỆN TỬNGÀNH KỸ THUẬ – T ĐIỀU KHIỂN TỰ ĐỘNG HÓA--- BÁO CÁO THỰC HÀNH TÍN HIỆU HỆ THỐNG... Tích chập, phép biến đổi Fourier và lọc tín hiệu I.. Phé
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆ – N ĐI ỆN TỬ NGÀNH KỸ THUẬ – T ĐI ỀU KHIỂN TỰ ĐỘNG HÓA
-
BÁO CÁO THỰC HÀNH TÍN HIỆU HỆ THỐNG
Trang 2Bài 1 Tín hiệu liên tục
Bài 1: Hàm bước nhảy đơn vị
function x = ustep(t)
x = (sign(t)+1)/2;
end
Bài 2: Hàm dốc đơn vị
function x = ramp(t)
x = t*ustep(t);
end
Bài 3: Vẽ đồ thị
syms t;
interval = [-10,10];
x = 5*ustep(t-2);
fplot(x,interval); axis([interval -1 6]);
Trang 3x = 3*ramp(t+5);
fplot(x,interval); axis([interval -1 45]);
x = 2*ramp(t+2.5)-5*ramp(t)+3*ramp(t-2)+ustep(t-4); fplot(x,interval); axis([interval -1 5]);
Trang 4
x = sin(t)*(ustep(t+3)-ustep(t-3));
fplot(x,interval); axis([interval -1 1]);
Bài 4: Sử dụng hàm ustep() và uramp() để tạo ra các tín hiệu có đồ thị cho trước
- Đồ thị 1:
Syms t;
interval = [-10 10];
x1 = ramp(t/2+2)-ramp(t)+ramp(t/2-2);
fplot(x1,interval); grid on;
axis([interval -0.5 2]);
Trang 5
- Đồ thị 2:
Syms t;
interval = [-10 10];
x2 = x1 + ustep(t+8)- ustep(t-8);
fplot(x2,interval,'LineWidth',2);
grid on;
axis([interval 0 3]);
I Tín hiệu chẵn, lẻ
Bài 1: Hàm trả về phần chẵn và lẻ
function [xe,xo] = evenodd(x,t)
xr = subs(x,t,-t);
xe = 1/2*(x+xr);
xo = 1/2*(x-xr);
end
Bài 2: Tìm phần chẵn, lẻ và vẽ đồ thị
clear;
syms t;
y = 2*ramp(t+2.5)-5*ramp(t)+3*ramp(t-2)+ustep(t-4); [ye,yo] = evenodd(y,t);
interval = [-10 10];
fplot(y,interval,'-k');hold on; grid on;
fplot(ye,interval,'-r');
fplot(yo,interval,'-.b');
legend('y','ye','yo');
Trang 6II Tổng của các tín hiệu tuần hoàn
clear
syms t;
omega = pi/10;
interval = [-10 10];
x1 = 1 + 1.5*cos(2*pi*omega*t)-0.6*cos(4*omega*t); fplot(x1,interval);grid on;
axis([interval -1.5 3]);
Trang 7x2 = 1 + 1.5*cos(2*pi*t)-0.6*cos(4*omega*t);
fplot(x2,interval);grid on;
axis([interval -1 3]);
III Năng lượng, công suất của một tín hiệu
clear;
syms t;
a = -10; b = 10;
x = exp(-t)*cos(2*pi*t)*ustep(t);
E = double(int(abs(x)^2,t,a,b))
P = double(E/(b-a))
Kết quả:
E =
0.2562
P =
0.0128
Trang 8IV Phép dịch, phép co giãn và phép đảo tín hiệu
Bài 1:
clear;
syms x(t);
x(t) = 2*exp(-abs(t));
interval = [-10 10];
fplot(x,interval,'-k');grid on; hold on;
axis([interval 0 2]);
fplot(x(t-2),interval,' r');
fplot(x(t+2),interval,'-.b');
legend('x(t)','x(t-2)','x(t+2)');
Bài 2:
clear;
syms x(t);
x(t) = exp(-abs(t));
interval = [-10 10];
fplot(x,interval,'-k');grid on; hold on;
axis([interval 0 1]);
fplot(x(2*t),interval,' r');
fplot(x(t/2),interval,'-.b');
legend('x(t)','x(2t)','x(0,5t)');
Trang 9Bài 3:
clear;
syms x(t);
x(t) = exp(-abs(t));
interval = [-10 10];
fplot(x,interval,'-.k');grid on; hold on;
axis([interval 0 1]);
fplot(x(-t),interval,' r');
legend('x(t)','x(-t)');
Trang 10Bài 2 Hàm tuyến tính
Bài 1 Tần số và nốt nhạc
clear;
clc;
T = 0.5; Fs = 8000; Amp = 5;
C = 262; D = 294; E = 330; F = 349; G = 392; A = 440; B = 494;
t = 0:1/Fs:T;
nC = Amp*exp(-2*t).*cos(2*pi*C*t);
nD = Amp*exp(-2*t).*cos(2*pi*D*t);
nE = Amp*exp(-2*t).*cos(2*pi*E*t);
nF = Amp*exp(-2*t).*cos(2*pi*F*t);
nG = Amp*exp(-2*t).*cos(2*pi*G*t);
nA = Amp*exp(-2*t).*cos(2*pi*A*t);
nB = Amp*exp(-2*t).*cos(2*pi*B*t);
x = [nC,nC,nG,nG,nA,nA,nG];
y = [nF,nF,nE,nE,nD,nD,nC];
n = 0*t;
sound([x n y],Fs);
Bài 2:
a)
clear;
clc;
A1 = 0.1155; A2 = 0.3417; A3 = 0.1789; A4 = 0.1232;
A5 = 0.0678; A6 = 0.0473; A7 = 0.026;
A8 = 0.0065; A9 = 0.002;
Amp = [A1,A2,A3,A4,A5,A6,A7,A8,A9];
teta =
[-2.1299,1.6727,-2.5454,0.6607,-2.039,2.1597,-1.0467,1.8581,-2.3925];
B = 494; Fs = 44100;
F = B*(1:9);
t = 0:1/Fs:2;
ph = teta'*ones(1,length(t));
x0 = Amp*cos(2*pi*F'*t+ph);
sound(x0,Fs);
Trang 11b)
plot(t,x0); grid on;
axis([1 1.0045 -0.7 0.7]);
c)
x1 = Amp*cos(2*pi*F'*t);
sound(x1,Fs);
Trang 12Bà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); pause(5);
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;
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);
Trang 13if 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ó
- 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
Trang 14
Câu hỏi 2: nhận xét về bộ lọc
- 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
- Bộ lọc có tác dụng khử nhiễu có tần số cao trong máy ghi
điện tim, ở Hình 3 nhiễu đã giảm so với hình