Tải bản đầy đủ (.docx) (12 trang)

Xử Lý Số Tín Hiệu Thực hành xử lý số tín hiệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (119.4 KB, 12 trang )

Bài 3.3 Cho phương trình sai phân: y(n)-0.6(n-1)+0.9y(n-2)=x(n)+0.8x(n-1)

Y ( Z ) − 0.6Z −1Y ( Z ) + 0.9Z −2Y ( Z ) = X ( Z ) + 0.8Z −1 X ( Z )
Y (Z )
1 + 0.8Z −1
H (Z ) =
=
X ( Z ) 1 − 0.6 Z −1 + 0.9 Z −2

H(e
=>



)

Y (e jω )
1 + 0.8e − jω
= H (Z) |z =e jω =
=
− jω
−2 jω

X ( e ) 1 − 0.6e + 0.9e

Chương trình mô phỏng như sau:
num=[1 0.8];
den=[1 -0.6 0.9];
w=-4*pi:8*pi/511:4*pi
h=freqz(num,den,w);
subplot(231)


plot(w/pi,real(h));grid on;title('Phan thuc cua X(e^{j\omega})');
xlabel('\omega/\pi');
ylabel('bien do');
subplot(232)
plot(w/pi,imag(h));grid on; title('Phan ao cua X(e^{j\omega})');
xlabel('\omega/\pi');
ylabel('bien do');
subplot(233);
plot(w/pi,abs(h));grid on; title('Pho bien do X(e^{j\omega})');
xlabel('\omega/\pi');
ylabel('bien do');
subplot(234);
plot(w/pi,angle(h));grid on; title('pho phase X(e^{j\omega})');
xlabel('\omega/\pi');
ylabel('pha do bang radian');
subplot(235)
h=impz(num,den);
stem(h); grid on; title ('dap ung xung don vi');
xlabel('chi so thoi gian'); ylabel('bien do');
subplot(236)
zplane(num,den);grid on; title('Bieu do diem cuc- diem khong');
FIR 1: cho đáp ứng xung bộ lọc fir như sau h1=[-1 2 1.3 -2.2 0.6 3 0.6 -2.2 1.3 2 -1];

Xác định đáp ứng tần số và phân bố cực không của bộ lọc
*Hàm
function [a,w,L,Hr]=loc1(h)
M=length(h);

1



L=(M-1)/2;
a=[h(L+1) 2*h(L:-1:1)]
n=[0:1:L];
w=linspace(0,2*pi,100)';
Hr=cos(w*n)*a';
stem(Hr);
end
*tạo file mới gõ
h1=[-1 2 1.3 -2.2 0.6 3 0.6 -2.2 1.3 2 -1];
M=length(h1);
n=0:M-1;
subplot(221)
stem(n,h1);
[a,w,L,Hr]=loc1(h1);
title(' dap ung xung '); xlabel('n'); ylabel('h(n)');
subplot(222)
stem(0:L,a);
title('He so a(n)'); xlabel('n'); ylabel('a(n)');
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
title('dap ung tan so'); xlabel('\omega'); ylabel('H(\omega');
subplot(224)
zplane(h1,1);
title('Bieu do diem cuc _ diem khong'); xlabel('thuc’);
ylabel('ao');

FIR 2: cho đáp ứng xung của bộ lọc FIR 2 như sau h2=[1.5 -2.5 3 3 -2.5 1.5];
Xác định đáp ứng tần số và phân bố cực không của bộ lọc.

*Hàm
function [b,w,L,Hr]=loc2(h)
M=length(h);
L=M/2;
b=[2*h(L:-1:1)];
n=[1:1:L];
w=linspace(0,2*pi,100)';
Hr=cos(w*(n-0.5))*b';
Stem(Hr);
end

*tạo file mới gõ:

h2=[1.5 -2.5 3 3 -2.5 1.5];
M=length(h2);
n=0:M-1;
subplot(221)
stem(n,h2);
[b,w,L,Hr]=loc2(h2);
title('Dap ung xung'); xlabel('n'); ylabel('h(n)');
2


subplot(222)
stem(1:L,b);
title('Cac he so b(n)'); xlabel('n'); ylabel('b(n)');
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
title('Dap ung tan so'); xlabel('\omega'); ylabel('H(\omega)');

subplot(224)
zplane(h2,1);
title('Bieu do diem cuc diem 0'); xlabel('Thuc'); ylabel('ao');

FIR 3: cho đáp ứng xung của bộ lọc FIR 3 như sau h3=[1.5 -2.5 3 2.5 -1.5];
Xác định đáp ứng tần số và phân bố cực không của bộ lọc.
*hàm
function [c,w,L,Hr]=loc3(h)
M=length(h);
L=(M-1)/2;
c=[2*h(L:-1:1)];
n=[1:1:L];
w=linspace(0,2*pi,100)';
Hr=sin(w*n)*c';
stem(Hr);
end

*tạo 1 file mới:

h3=[1.5 -2.5 3 2.5 -1.5]
M=length(h3);
n=0:M-1;
subplot(221)
stem(n,h3);
[c,w,L,Hr]=loc3(h3)
title(' Dap ung xung'); xlabel('n'); ylabel('h(n)');
subplot(222)
stem(1:L,c);
title('Cac he so c(n)'); xlabel('n'); ylabel('c(n)');
subplot(223)

w=linspace(0,2*pi,100);
plot(w,Hr);
title('dap úng tan so'); xlabel('\omega'); ylabel('H(\omega)');
subplot(224)
zplane(h3,1);
title('Bieu do diem cuc - diem khong'); xlabel('Thuc');
ylabel('Ao');

FIR 4: cho đáp ứng xung của bộ lọc FIR 4 như sau h4=[1.5 -2.5 3 -3 2.5 -1.5];
3


Xác định đáp ứng tần số và phân bố cực không của bộ lọc.
*Hàm:
function [d,w,L,Hr]=loc4(h)
M=length(h);
L=M/2
d=[2*h(L:-1:1)];
n=[1:1:L];
w=linspace(0,2*pi,100)';
Hr=sin(w*(n-0.5))*d';
stem(Hr);
end
*tạo 1 file mới:
h4=[1.5 -2.5 3 -3 2.5 -1.5]
M=length(h4);
n=0:M-1;
subplot(221)
stem(n,h4);
title('dap ung xung'); xlabel('n'); ylabel('h(n)');

[d,w,L,Hr]=loc4(h4);
subplot(222)
stem(1:L,d);
title('cac he so d(n)'); xlabel('n'); ylabel('d(n)');
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
title('dap ung tan so'); xlabel('\omega'); ylabel('H(\omega)');
subplot(224)
zplane(h4,1);
title('Bieu do diem cuc-diem khong'); xlabel('thuc');
ylabel('ao');

Chương 2:
BÀI 1:Viết chương trình và vẽ tín hiệu dạng hàm u(n-3),u(n+2)

*Hàm stepseq
function [ x,n ] = stepseq( n0,n1,n2 )
if((n0>n2)|(n0erros('argumment must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)>=0];
4


*tạo file mới
n1=[-5:10];
x1=stepseq(3,-5,10);
subplot(2,1,1);

stem(n1,x1);
xlabel('chi so thoi gian');
ylabel('bien do');
axis([-5 10 -0.2 1.2]);
n2=[-5:10];
x2=stepseq(-2,-5,10);
subplot(2,1,2);
stem(n2,x2);
xlabel('chi so thoi gian');
ylabel('bien do');
axis([-5 10 -0.2 1.2]);

BÀI 2:Viết chương trình và vẽ tín hiệu dạng hàm x(n)= 2u(n-2)+u(n-2) trong khoảng
(-10,10). Từ đó vẽ x(-n), x(2n), 2x(n)

*Hàm stepseq
function [ x,n ] = stepseq( n0,n1,n2 )
if((n0>n2)|(n0erros('argumment must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)>=0];

*Hàm impseq
function [x,n] = impseq(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
error('arguments must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)==0];


*Hàm sigadd
function [y,n] = sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;
end

*Hàm sigfold
function [y,n] = sigfold(x,n)
y=fliplr(x);n=-fliplr(n);

*tạo file mới
5


n=[-10:10];
x=[0:1:10:9:-1:1];
[x1,n1]=stepseq(2,-10,10);
[x2,n2]=impseq(2,-10,10);
[x3,n3]=sigadd(2.*x1,n1,x2,n2);
[x4,n4]=sigfold(x3,n3);
subplot(2,1,1);
stem(n3,x3);
grid on;
title('Xn');
subplot(2,1,2);
stem(n4,x4);

grid on;
title('ham X(-n)');

BÀI 3:Viết chương trình thể hiện trên đồ thị kết quả phép tính tích chập giữa 2 dãy

x( n) = rect6 ( n)
 n
1 − 0 ≤ n < 4
h( n) =  4
 0 → n con lai
*Hàm stepseq

function [ x,n ] = stepseq( n0,n1,n2 )
if((n0>n2)|(n0erros('argumment must satisfy n1<=n0<=n2')
end
n=[n1:n2];
x=[(n-n0)>=0];

*hàm sigadd

function [y,n] = sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;
end

*Tạo file mới

n=-4:10;
[x1,n1]=stepseq(0,-4,10);
[x2,n2]=stepseq(5,-4,10);
[x3,n3]=sigadd(x1,n1,-1*x2,n2);
h=[0 0 0 0 1 3/4 1/2 1/4 0 0 0 0 0 0 0]
nh=[-4:10];
6


figure(1)
subplot(2,1,1);
stem(n3,x3);
title('day dau vao');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2);
stem(n,h);
title('dap ung xung');
xlabel('n');
ylabel('h(n)');
[y,ny]=conv_m(x3,n3,h,nh);
figure(2)
stem(ny,y);
title('dau ra');
xlabel('n');
ylabel('y(n)');
Bài 4 trang 47 : Viet chương trình thể hiện trên đồ thị kết quả hàm tương tự tương quan
của dãy sau: X(n) = {6,8,2,-5,4,-7,1} -3n3
*Funcion
function [x,n] =stepseq(n0,n1,n2)

n=[n1:n2];
x=[(n-n0)>=0];
--------------------function [x,n] =impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
--------------------------------------------function [y,n] =sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2));
y1=zeros(1,length(n));
y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;
--------------------------------------------------------------function [y,n] = sigfold(x,n)
y=fliplr(x);
n=-fliplr(n);
-------------------------------------function [y,ny] =conv_m(x,nx,h,nh)
nyb=nx(1)+nh(1);
7


nye=nx(length(x))+nh(length(h));
ny=[nyb:nye];
y=conv(x,h);
*Comment Window
n=[-4:10];
[x1,n1]=stepseq(0,-4,10);
[x2,n2]=stepseq(6,-4,10);
[x,n]=sigadd(x1,n1,-x2,n2);
nx=[-4:10];
h=[0,0,0,0,1,0.75,0.5,0.25,0,0,0,0,0,0,0];

nh=[-4:10];
figure(1)
subplot(2,1,1)
stem(n,x);axis([-4,10,0,2]);
title('day dau vao');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2)
stem(n,h); axis([-4,10,0,2]);
title('dap ung xung');
xlabel('n');
ylabel('h(n)');
figure(2)
[y,ny]=conv_m(x,nx,h,nh)
stem(ny,y); axis([-4,10,0,8]);
title(' day ra');
xlabel('n');
ylabel('y(n)');

BÀI 5:Xét hệ thống có phương trình sai phân y(n)=0.3x(n)+0.2x(n-1)-0.3x(n-2)0.9y(n-1)+0.9y(n-2)
n=0:40;
y=[1 0.9 -0.9];
x=[0.3 0.2 -0.3];
h=impz(x,y,n+1);
stem(n,h);
title('dap ung xung cua he thong');

Chương 3
BÀI 1:Xác định và vẽ điểm cực diểm không của các hệ thống sau:


8


H (z) =

2 + 5 z −1 + 4 z −2 + 5 z −3 + 3z −4
5 + 45 z −1 + 2 z −2 + z −3 + z −4

num=[2 5 4 5 3];
den=[5 45 2 1 1];
[z,p,k]=tf2zp(num,den);
zplane(num,den);
BÀI 2 phân tích các biểu thức sau dùng phương pháp thặng dư:
H (z) =

1 − 4.2 z −2 + 0.8 z −2
1 − 2.5 z −1 + 3 z −2 − z −3

G( z) =

;

1 + z −1
(1 + 2 z −1 )(1 − z −1 )

num=[1 -4.2 0.8];
den=[1 -2.5 3 -1];
subplot(2,1,1);
[A,p,k]=residuez(num,den);
zplane(num,den);

num=[1 1];
den=[1 1 8 -8];
subplot(2,1,2);
[A,p,k]=residuez(num,den);
zplane(num,den);

BÀI 3:Cho hệ thống vào /ra là phương trường sai phân hằng:
y(n)=x(n)-2x(n-2)+0.81y(n-1).Xác định hàm truyền đạt H(z) rồi viết chương trình xác
định điểm cực điểm không. Phân tích dùng phương pháp thặng dư.
1 − 2 z −2
H (z) =
1 − 0.8 z −1
num=[1 0 -2];
den=[1 -0.81];
[A,p,k]=residuez(num,den);
zplane(num,den);
X (e − jω ) =

BÀI 3:Tính DTFT trong khoảng [-π, π]:

0.8 + 3e − jω − 0.2e − j 2ω + 0.1e − j 3ω
1 + 0.1e − jω − 0.4e − j 2ω + 3 + 0.7e − jω

num=[0.8 3 -0.2 0.1];
den=[1 0.1 -0.4 0.7];
w=-4*pi:8*pi/511:4*pi;
h=freqz(num,den,w);
subplot(2,2,1);
plot(w/pi,real(h));
grid on;

title('phan thuc cua X(e^{j\omega})');
xlabel('\Omega/\pi');
ylabel('bien do');
subplot(2,2,2);
9


plot(w/pi,imag(h));
grid on;
title('phan ao cua X(e^{j\omega})');
xlabel('\Omega/\pi');
ylabel('bien do');
subplot(2,2,3);
plot(w/pi,abs(h));
grid on;
title('pho bien do cua X(e^{j\omega})');
xlabel('\Omega/\pi');
ylabel('bien do');
subplot(2,2,4);
plot(w/pi,angle(h));
grid on;
title('pho phase cua X(e^{j\omega})');
xlabel('\Omega/\pi');
ylabel('pho do bang radian');

Bài 5a: Viết chương trình tính và thể hiện trên đồ thị fourier rời rạc của các dãy sau:

N=40 và

 1 0 ≤ n<4

x ( n) = 
0 n con lai

N=5
M=40
x=[ones(1,N)];
X=fft(x,M);
t=0:1:N-1;
figure(1)
stem(t,x);
title('day x[n]');
xlabel('chi so thoi gian');
ylabel('bien do');
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
title('bien do cua DFT X[k]');
xlabel('chi so tan so k');
ylabel('bien do');
subplot(2,1,2);
plot(k,angle(X));
grid on;
title('pha cua DFT X[k]');
xlabel('chi so tan so k');
ylabel('pha cua X(k)');

Bài 5b: Viết chương trình tính và thể hiện trên đồ thị fourier rời rạc của các dãy sau:
10



N=60 và

 1 0 ≤ n<4
x ( n) = 
0 n con lai

N=5
M=60
x=[ones(1,N)];
X=fft(x,M);
t=0:1:N-1;
figure(1)
stem(t,x);
title('day x[n]');
xlabel('chi so thoi gian');
ylabel('bien do');
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
title('bien do cua DFT X[k]');
xlabel('chi so tan so k');
ylabel('bien do');
subplot(2,1,2);
plot(k,angle(X));
grid on;
title('pha cua DFT X[k]');

xlabel('chi so tan so k');
ylabel('pha cua X(k)');

Bài 5c: Viết chương trình tính và thể hiện trên đồ thị fourier rời rạc của các dãy sau:

N=60 và

 1 0 ≤ n<6
x ( n) = 
0 n con lai

N=5
M=60
x=[ones(1,N)];
X=fft(x,M);
t=0:1:N-1;
figure(1)
stem(t,x);
title('day x[n]');
xlabel('chi so thoi gian');
ylabel('bien do');
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
11


title('bien do cua DFT X[k]');

xlabel('chi so tan so k');
ylabel('bien do');
subplot(2,1,2);
plot(k,angle(X));
grid on;
title('pha cua DFT X[k]');
xlabel('chi so tan so k');
ylabel('pha cua X(k)');

12



×