1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo thực hành môn tín hiệu và hệ thống

14 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo thực hành môn tín hiệu và hệ thống
Tác giả Trần Phương Du
Người hướng dẫn PTS. Trịnh Hoàng Minh
Trường học ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN-ĐIỆN TỬ
Chuyên ngành Tín hiệu và hệ thống
Thể loại Báo cáo thực hành
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 1,43 MB

Nội dung

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 2

Bà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 urampt để 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 00 =

��

>> 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(20t) - 0,6cos(4 t) hay x (t) = 1 + f (t) – f0 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  00 =

��

>> 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 7

Bài 1: Vẽ đồ thị của các hàm số sau trên cùng một đồ thị: x , xt t-2 và xt2 (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 , xt 2t và x0,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 8

Bài 3: Vẽ đồ thị của các hàm số sau trên cùng một đồ thị: x và xt -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 9

n=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 10

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:

[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 11

t=(-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 13

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)

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))

Ngày đăng: 17/06/2024, 17:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w