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ị rampBài 1: Viết hàm y ustep t để biểu diễn hàm bước nhảy đơn vị... BÀI 3: TÍCH CHẬP, PHÉP BIẾN ĐỔI FOURIER V
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN-ĐIỆN TỬ
BÁO CÁO THỰC HÀNH MÔN TÍN HIỆU
VÀ HỆ THỐNG
Giáo vi n hướng dẫn : TRỊNH HOÀNG MINH.
Sinh viên thực hiện : Trần Phương Du.
MSSV : 20212717.
Mã lớp : 724977.
Hà Nội, Ngày 16 tháng 02 năm 2022
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) Bài 1: Viết hàm y ustep t để biểu diễn hàm bước nhảy đơn
vị function y=ustep(t,t0)
n=length(t);
y=zeros(1,n);
if t(i)>= t0
y(i)=1;
end >>ti
end
Bài 2: Viết hàm y urampt để biểu diễn hàm dốc đơn vị
function y=uramp(t,t0)
n=length(t);
y=zeros(1,n);
if t(i)>= -t0
y(i)=t(i)+m;
end
end
Bài 3: Sử dụng các hàm vừa viết, vẽ đồ thị của các tín hiệu liên tục sau trên đoạn
-10 t 10
+ 5u(t-2)
>> t = linspace(-10,10,5000);
>> y1 = 5*ustep(t,2);
>> plot(t,y1)
+ 3r(t+5)
>> t=-10:0.01:10;
>> plot(t,3*uramp(t,5))
>> grid on
>> title('y=3r(t+5)')
Trang 3+ y(t) = 2r(t+2,5) - 5r(t) + 3r(t-2) + u(t-4)
>> t = linspace(-10,10,5000);
>> y3 = 2*uramp(t,-2.5) - 5*uramp(t,0) + 3*uramp(t,2) + ustep(t,4);
>> plot(t,y3)
+ y(t) = sin(t)*[u(t+3) - u(t-3)]
>> t = linspace(-10,10,5000);
>> y4 = sin(t).*[ustep(t,-3) - ustep(t,3)];
>> plot(t,y4)
Bài 4: Sử dụng hai hàm trên để tạo ra các tín hiệu có đồ thị như sau: + Đồ thị 1:
Trang 4>> t = linspace(-10,10,5000);
>> y1 = 0.5*uramp(t,4) + 0.5*uramp(t,-4) - uramp(t,0);
>> plot(t,y1)
+ Đồ thị 2:
>> t = linspace(-10,10,5000);
>> y2 = ustep(t,-8) - ustep(t,8) + 0.5*uramp(t,4) + 0.5*uramp(t,-4) - uramp(t,0);
>> plot(t,y2)
II Tín hiệu chẵn lẻ
Bài 1: Xây dựng hàm số trả về kết quả là phần chẵn và phần lẻ của một tín hiệu như sau:
function [ye,yo] = evenodd(y)
yr = fliplr(y);
ye = 0.5*(y + yr);
yo = 0.5*(y - yr);
Bài 2: Sử dụng hàm số trên để tìm phần chẵn và phần lẻ của các tín hiệu liên tục sau và vẽ
đồ thị của tín hiệu chính cũng như phần chẵn và phần lẻ của nó trong cùng một đồ thị sử dụng các dạng đường thẳng và màu sắc khác nhau: (giả sử
-10 t 10)
y(t) = 2r(t+2,5) - 5r(t) + 3r(t-2) + u(t-4)
>> t = linspace(-10,10,5000);
Trang 5>> y = 2*uramp(t,-2.5) - 5*uramp(t,0) + 3*uramp(t,2) + ustep(t,4);
>> [ye,yo] = evenodd(y);
>> plot(t,yo,'b ','linewidth',2); hold on;
>> plot(t,ye,'r-.','linewidth',2);
>> plot(t,y,'k','linewidth',2)
>> legend('yo', 'ye', 'y');
>> grid on
III Tổng của các tín hiệu tuần hoàn:
hoàn hay không? Nếu có, tìm chu kì của nó?
a, x (t) = 1 + 1,5cos(2 1 0 t) - 0,6cos(4 t) với 0 0 = �
��
>> w = pi/10;
>> t = [-10:pi/100:10];
>> x1 = 1 + 1.5*cos(2*pi*w*t)-0.6*cos(4*w*t);
>> plot(t,x1)
x1(t) = 1 + 1,5cos(20t) - 0,6cos(4 t) hay x (t) = 1 + f (t) – f0 1 1 2(t)
trong đó: f (t) = 1,5cos(21 0t) với T = 1 1
0= 10 (s)
�
f2(t) = 0,6cos(4 t) với T = 0 2 � = 5 (s)
Trang 6=> = không phải là số hữu tỷ.
b, x (t) = 1 + 1,5cos(6 t) - 0,6cos(4 t) với 2 0 0 =
�
��
>> w = pi/10;
>> t = [-10:pi/100:10];
>> x2 = 1 + 1.5*cos(6*pi *t)-0.6*cos(4*w*t);
>> plot(t,x2)
x2(t) = 1 + 1,5cos(6 t) - 0,6cos(4 t) hay x (t) = 1 + f (t) – f 0 2 3 4(t)
trong đó: f (t) = 1,5cos(6 t) với T = 3 1 1 (s)
3
f4(t) = 0,6cos(4 t) với T = 0 2 �
=> = T1
IV Năng lượng, công suất của 1 tín hiệu
công cụ biến tượng trưng của Matlab
x(t) = e -t cos(2πt)u(t)
>> syms t;
>> T = 20;
>> u(t) = heaviside (t);
>> x(t) = exp(-t).*cos(2*pi*t).*u(t);
>> f = (abs(x(t))).^2;
>> E = int (f, t, -T/2, T/2)
>> P = int (f, t, -T/2, T/2)/T
Kết quả:
E =
(exp(-20)*(2*pi^2 + 1)*(exp(20) - 1))/(2*(4*pi^2 + 1))
P =
(exp(-20)*(2*pi^2 + 1)*(exp(20) - 1))/(40*(4*pi^2 + 1))
V Phép dịch, phép co giãn và phép đảo tín hiệu
Trang 7Bài 1: Vẽ đồ thị của các hàm số sau trên cùng một đồ thị: x , xt t-2 và xt2 (giả sử 10
t 10) với: x(t) = e-|t|
>> t = linspace(-10,10,5000);
>> x = exp(-(abs(t)));
>> x1 = exp(-(abs(t-2)));
>> x2 = exp(-(abs(t+2)));
>> plot(t,x,'b','linewidth',2); hold on;
>> plot(t,x1,'k ','linewidth',2);
>> plot(t,x2,'r:','linewidth',2);
>> legend('x(t)', 'x(t-2)', 'x(t+2)');
>> grid on
Bài 2: Vẽ đồ thị của các hàm số sau trên cùng một đồ thị: x , xt 2t và x0,5t (giả sử 10
t 10) với: x(t) = e-|t|
>> t = linspace(-10,10,5000);
>> x = exp(-(abs(t)));
>> x1 = exp(-(abs(2*t)));
>> x2 = exp(-(abs(0.5*t)));
>> plot(t,x,'b','linewidth',2); hold on;
>> plot(t,x1,'k ','linewidth',2);
>> plot(t,x2,'r:','linewidth',2);
>> legend('x(t)', 'x(t-2)', 'x(t+2)');
>> grid on
Trang 8Bài 3: Vẽ đồ thị của các hàm số sau trên cùng một đồ thị: x và xt -t (giả sử 10 t
10) với: x(t) = e-|t|
>> t = linspace(-10,10,5000);
>> x = exp(-(abs(t)));
>> x1 = exp(-(abs(-t)));
>> plot(t,x,'b','linewidth',2); hold on;
>> plot(t,x1,'k ','linewidth',2);
>> legend('x(t)', 'x(-t)');
>> grid on
Bài 2: Tín Hiệu âm nhạc
Bài 1: Hãy viết một chương trình Matlab để chơi bản nhạc sau: CCGGAAG ,
FFEEDDC ,
Bạn có thể căn chỉnh độ dài của từng nốt để có kết quả tốt hơn
function ti()
Fs= 8000;
Ts=1/Fs;
t=[0:Ts:0.8];
A=2;
Fc=262;Fd=294;Fe=330;Ff=349;Fg=392;Fa=440;Fb=494;Fj=0;
nc=A*exp(-0.5*t).*cos(2*pi*Fc*t);
nd=A*exp(-0.5*t).*cos(2*pi*Fd*t);
ne=A*exp(-0.5*t).*cos(2*pi*Fe*t);
nf=A*exp(-0.5*t).*cos(2*pi*Ff*t);
ng=A*exp(-0.5*t).*cos(2*pi*Fg*t);
na=A*exp(-0.5*t).*cos(2*pi*Fa*t);
Trang 9n=A*exp(-0.5*t).*cos(2*pi*Fj*t);
song=[nc nc ng ng na na ng n n nf nf ne ne nd nd nc n n];
sound(song,Fs)
end
>>ti
Bài 2: Chuỗi Fourier của kèn:
a >> 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];
>> ph=[-2.1299 1.6727 -2.5454 0.6607 -2.0390 2.1597 -1.0467 1.8581 -2.3925];
>> f=[F 2*F 3*F 4*F 5*F 6*F 7*F 8*F 9*F]; >> x=A*cos(2*pi*f'*t-ph'*ones(1,44100))
>>sound(x,44100);
>>subplot(2,1,1)
>>plot(t(1:200),x(1:200))
>>axis tight
>>grid on
b
c >> 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];
>> pha=zeros(1,9);
>> f=[F 2*F 3*F 4*F 5*F 6*F 7*F 8*F 9*F];
>> x=A*cos(2*pi*f'*t-pha'*ones(1,44100)) ;
>> sound(x,44100);
>>subplot(2,1,1)
>>plot(t(1:200),x(1:200))
>>axis tight
>>grid on
Trang 10BÀ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)
if n2==N/2; X(1:n2-1)=Xf(n2+2:N); X(n2:N)=Xf(1:n2+1);
else ; X(1:n2-1)=Xf(n2+1:N); X(n2:N)=Xf(1:n2);
f=(-n2+1)*df:df:(n2-1)*df ; end ;
end
Hàm tính ảnh ngược của tín hiệu:
#IfourierTransform.m
function [t,x]=IFourierTransform(f,X)
nns=sum(f<0);
if n2==N/2; x(1:n2-1) = xf(n2+2:N); x(n2:N) = xf(1:n2+1);
Trang 11t=(-n2+1) *dt:dt:n2 *dt;
2 Lọc tín hiệu điện tim
Chương trình main.m của MATLAB sau đây được sử dụng để vẽ tín hiệu điện tim và phổ biên độ của nó.
%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] );
subplot(2,1,2)
plot( f, abs(Xf) , ' linewidth ' , 1);
grid; axis ( [-150 150 0 0.12] );
Câu hỏi 1:
Nhận xét:
Trang 12+ Tín hiệu điện tim là tín hiệu tuần hoàn
+ Trên đồ thị phổ thấy những điểm nhiễu lân cận tại tần số f=0 (Hz)
%main.m
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) ' );
Nhận xét:
+ Đây là bộ lọc thông thấp
+Vùng tần số mà bộ lọc cho đi qua từ 0 (Hz) đến 100 (Hz)
Câu hỏi 2:
Trang 13Yf=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)
plot(t2 , y , ' r ' , ' linewidth ' , 1); grid;
axis([0 2.5 -0.5 1.5]);
xlabel( 't (sec) ' ); ylabel( ' y(t) ');
Câu hỏi 3: Nhận xét về tác dụng của bộ lọc khi so sánh các đồ thị trong các Hình 1 và Hình 3 là:
+Tác dụng của bộ lọc : khử tín hiệu nhiễu ở tần số cao( hạn chế những tín hiệu có tần số lớn hơn 100 (Hz))