Bài 3: Tích chập, phép biến đổi Fourier và lọc tín hiệu I.. Phép biến đổi Fourier và lọc tín hiệu bằng bộ lọc Butterworth bậc 51... xlabel''''f Hz'''';ylabel''''|Xf|'''';Câu hỏi 1: Chạy chương trình
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
BÀI BÁO CÁO THỰC HÀNH
Nguyễn Huy Văn – MSSV: 20222436
Van.NH222436@sis.hust.vn
Ngành Kỹ thuật điều khiển và tự động hóa
Giảng viên hướng dẫn: TS Nguyẽn Duy Long
Họ và tên:
MSSV:
Tên học phần:
Mã học phần:
Mã lớp học:
Kỳ học:
Nguyễn Huy Văn 20222436 Tín hiệu và hệ thống EE2000
736400 2023.1
Trang 2HÀ NỘI, 11/2023
Trang 3Bà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)
1) function x=us(t)
x=(sign(t)+1)/2;
2) function x=ur(t)
x=t.*us(t);
3)
a) t=-10:0.01:10;
plot(t-2.5*us(t), ,'r' 'LineWidth',2)
grid on
axis tight;
b) t=-10:0.01:10;
plot(t+5,3*ur(t), ,'g' 'LineWidth',2)
grid on
axis tight;
c) t=-10:0.01:10;
y=2*ur(t+2.5)-5*ur(t)+3*ur(t-2)+us(t-4);
plot(t,y, ,'b' 'LineWidth',2)
grid on
axis tight;
d) t=-10:0.01:10;
y=sin(t).*(us(t+3)-us(t-3));
plot(t,y, ,'y' 'LineWidth',2)
grid on
axis tight;
Trang 4a) t=-10:0.01:10;
y=0.5*ur(t+4)-ur(t)+0.5*ur(t-4);
plot(t,y, ,'r' 'LineWidth',2)
gird on
axis tight;
b) t=-10:0.01:10;
y=us(t+8)+0.5*ur(t+4)-ur(t)+0.5*ur(t-4)-us(t-8); plot(t,y, ,'b' 'LineWidth',2)
gird on
axis tight;
II) Tín hiệu chẵn lẻ
1) function [ye,yo] = evenodd(y)
% even/odd decomposition
% y: analog signal
% ye, yo: even and odd components
% [ye,yo] = evenodd(y)
yr = fliplr(y);
ye = 0.5*(y + yr);
yo = 0.5*(y - yr);
2) t=-10:0.01:10;
y=2*ur(t+2.5)-5*ur(t)+3*ur(t-2)+us(t-4); [ye,yo]=evenodd(y);
subplot(311)
plot(t,y,'r','linewidth',2);
Trang 5grid on;
axis tight;
subplot(312)
plot(t,ye,'g','linewidth',2);
axis tight;
subplot(313)
plot(t,yo,'b','linewidth',2);
axis tight;
III) Tổng của các tín hiệu tuần hoàn
a) t=-10:0.01:10;
a = pi/10;
y=1+1.5*cos(2*pi*a*t)-0.6*cos(4*a*t);
plot(t,y)
disp('Ham tuan hoan')
b) t=-10:0.01:10;
a = pi/10;
y=1+1.5*cos(6*pi*t)-0.6*cos(4*a*t);
plot(t,y,'k','linewidth',2)
disp('Ham tuan hoan')
III) Năng lượng, công suất của một tín hiệu
syms ;x
y=exp(-x)*cos(2*pi*x)*us(x);
E=int((abs(y))^2,x,-10,10);
P=(1/20)*int((abs(x))^2,x,-10,10);
disp(E)
disp(P)
Trang 6IV) Phép dịch, phép co dãn và phép đảo tín hiệu
1) t=-10:0.01:10;
x=exp(-abs(t));
hold on
plot(t,x,'r','linewidth',2)
hold on
plot(t-2,x,'g','linewidth',2)
hold on
plot(t+2,x,'b','linewidth',2)
grid on
axis tight;
2) t=-10:0.01:10;
x=exp(-abs(t));
hold on
plot(t,x,'r','linewidth',2)
hold on
plot(0.5*t,x,'g','linewidth',2)
hold on
plot(2*t,x,'b','linewidth',2)
grid on
axis tight;
3) t=-10:0.01:10;
x=exp(-abs(t));
hold on
plot(t,x,'r','linewidth',2)
hold on
plot(-t,x,'g','linewidth',2)
grid on
axis tight;
Trang 7Bài 2: Tín hiệu âm nhạc
Question 1:
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=1*cos(2*pi*Fc*t);
D=1*cos(2*pi*Fd*t);
E=1*cos(2*pi*Fe*t);
F=1*cos(2*pi*Ff*t);
G=1*cos(2*pi*Fg*t);
A=1*cos(2*pi*Fa*t);
B=1*cos(2*pi*Fb*t);
Si=1*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)
Question 2:
a) t = linspace(0,1,44100);
F=494;
C = [0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0065 0.0020];
Th = [-2.13 1.67 -2.545 0.661 -2.039 2.16 -1.0467 1.858 -2.39];
X = C*cos(2* pi * F * (1:9)' * t- Th '*ones(1,44100));
sound (x,44100);
b) t = linspace(0,1,44100);
F=494;
C = [0.1155 0.3417 0.1789 0.1232 0.0678
0.0473 0.0260 0.0065 0.0020];
Th= [2.13 1.67 2.545 0.661 2.039 2.16
-1.0467 1.858 -2.39];
x=C*cos(2*pi*F*(1:9)'*t-Th'*ones(1,44100));
plot(t(1:200),x(1:200))
axis tight;
Trang 8grid on;
c) t = linspace(0,1,44100);
F=494;
C = [0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.0260 0.0065 0.0020];
Th= zeros(1,9);
x=C*cos(2*pi*F*(1:9)'*t-Th'*ones(1,44100));
plot(t(1:200),x(1:200))
axis tight;
grid on;
Trang 9
Bà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.
Thay thế lệnh waveread bằng audioread và giữ lại các lệnh như cũ:
[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 của bạn
* Chương trình tính ảnh Fourier của tín hiệu:
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);
Trang 10f=(-n2+1)*df:df:(n2-1)*df; end
* Chương trình tính ảnh Fourier ngược:
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
Vẽ đồ thị tín hiệu điện tim và phổ của nó:
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]);
Trang 11xlabel('f (Hz)');ylabel('|X(f)|');
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
(Hình 1)
Trang 12Câu hỏi 2: Nhận xét về bộ lọc đã dùng.
_ 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
(Hình 2)
Trang 13Câ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 tần số cao trong máy ghi điện tim Ở hình 3, nhiễu đã giảm so với hình 1
(Hình 3)