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
=>
jω
)
Y (e jω )
1 + 0.8e − jω
= H (Z) |z =e jω =
=
− jω
−2 jω
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)|(n0
erros('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)|(n0
erros('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)|(n0
erros('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