Bài 3.3 Cho phương trình sai phân: y(n)0.6(n1)+0.9y(n2)=x(n)+0.8x(n1)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ọcHàmcho đáp ứng xung bộ lọc fir 4cho đáp ứng xung bộ lọc fir 2cho đáp ứng xung bộ lọc fir 3Thiết kế bộ lọc thông thấp dùng cửa sổ blackmanThiết kế bộ lọc thông cao dùng cửa sổ blackmanThiết kế bộ lọc thông thấp dùng cửa sổ kasiser
Trang 1Bà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)
1
( )
H Z
=>
(Z) |
j
j
X e
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)
subplot(232)
subplot(233);
subplot(234);
subplot(235)
h=impz(num,den);
subplot(236)
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);
L=(M-1)/2;
a=[h(L+1) 2*h(L:-1:1)]
Trang 2w=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);
subplot(222)
stem(0:L,a);
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
subplot(224)
zplane(h1,1);
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);
subplot(222)
Trang 3stem(1:L,b);
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
subplot(224)
zplane(h2,1);
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)
subplot(222)
stem(1:L,c);
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
subplot(224)
zplane(h3,1);
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]; Xác định đáp ứng tần số và phân bố cực không của bộ lọc.
*Hàm:
Trang 4function [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);
[d,w,L,Hr]=loc4(h4);
subplot(222)
stem(1:L,d);
subplot(223)
w=linspace(0,2*pi,100);
plot(w,Hr);
subplot(224)
zplane(h4,1);
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<n1)|(n2<n1))
end
n=[n1:n2];
x=[(n-n0)>=0];
*tạo file mới
n1=[-5:10];
x1=stepseq(3,-5,10);
Trang 5stem(n1,x1);
axis([-5 10 -0.2 1.2]);
n2=[-5:10];
x2=stepseq(-2,-5,10);
subplot(2,1,2);
stem(n2,x2);
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<n1)|(n2<n1))
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))
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
n=[-10:10];
x=[0:1:10:9:-1:1];
Trang 6[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;
subplot(2,1,2);
stem(n4,x4);
grid on;
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
6
0 con lai
x n rect n
n
n
h n
n
*Hàm stepseq
function [ x,n ] = stepseq( n0,n1,n2 )
if((n0>n2)|(n0<n1)|(n2<n1))
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];
figure(1)
subplot(2,1,1);
stem(n3,x3);
Trang 7subplot(2,1,2);
stem(n,h);
[y,ny]=conv_m(x3,n3,h,nh);
figure(2)
stem(ny,y);
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} -3≤n≤3
*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);
nye=nx(length(x))+nh(length(h));
ny=[nyb:nye];
y=conv(x,h);
Trang 8*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);
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:
( )
H z
num=[2 5 4 5 3];
Trang 9den=[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
1 ( )
(1 2 z )(1 z )
z
G z
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ư.
2 1
1 2
(z)
1 0.8
z H
z
num=[1 0 -2];
den=[1 -0.81];
[A,p,k]=residuez(num,den);
zplane(num,den);
BÀI 3:Tính DTFT trong khoảng [-π, π]:
2
j
X e
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;
subplot(2,2,2);
plot(w/pi,imag(h));
grid on;
subplot(2,2,3);
plot(w/pi,abs(h));
grid on;
Trang 10title('pho bien do cua X(e^{j\omega})');
subplot(2,2,4);
plot(w/pi,angle(h));
grid on;
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 ( )
0 n con lai
x n
N=5
M=40
x=[ones(1,N)];
X=fft(x,M);
t=0:1:N-1;
figure(1)
stem(t,x);
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
subplot(2,1,2);
plot(k,angle(X));
grid on;
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:
N=60 và
1 0 n<4 ( )
0 n con lai
x n
N=5
M=60
x=[ones(1,N)];
X=fft(x,M);
Trang 11figure(1)
stem(t,x);
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
subplot(2,1,2);
plot(k,angle(X));
grid on;
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 ( )
0 n con lai
x n
N=5
M=60
x=[ones(1,N)];
X=fft(x,M);
t=0:1:N-1;
figure(1)
stem(t,x);
figure(2)
subplot(2,1,1);
k=0:1:M-1;
stem(k,abs(X));
grid on;
subplot(2,1,2);
plot(k,angle(X));
grid on;