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

bài tập thiết kế lọc số và mã hóa băng con

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 (484.03 KB, 12 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN TỬ VIỄN THÔNG

BÀI TẬP MÔN
Thiết kế lọc số và mã hóa băng con
Người hướng dẫn: Học viên thực hiện:
TS. Ngô Văn Sỹ Phạm Hữu Phương
Lớp: K25.KĐT.ĐN
Đà Nẵng, 12/2012
3.3c) Phân tích biến đổi DTFT của dãy sau vẽ đồ thị biên độ và pha của X(e
ω
j
) sử
dụng MATLAB.
x(n) = n(0.5)
n
u(n)
X(e
ω
j
) = F{ n(0.5)
n
u(n)} =
2
)5.01(
5.0
ω
ω
j
j


e
e



Dùng MATLAB để vẽ đồ thị biên độ và pha của X(e
ω
j
)
w = [0:1:500]*pi/500;
X = (0.5)*exp(-j*w) ./ ((1 - 0.5*exp(-j*w)).^(2)) ;
magX = abs(X); angX = angle(X);
subplot(2,1,1); plot(w/pi,magX); grid
xlabel('frequency in pi units') ; title('Magnitude Part');
ylabel('Magnitude')
subplot(2,1,2); plot(w/pi,angX); grid
xlabel('frequency in pi units'); title('Angle Part');
ylabel('Radians')
4.12a) Cho hệ thống tuyến tính và bất biến được mô tả bởi hàm hệ thống dưới đây,
xác định i) đáp ứng xung ii) phương trình hiệu iii) đồ thị điểm cực - điểm không và
iv) ngõ ra y(n) nếu ngõ vào x(n)= 3cos(
π
n/3)u(n)
i) Xác định đáp ứng xung của hệ thống
H(z) =
5.0
1

+
z

z
= -2 +
1
5.01
3

− z
h(n)= -2
δ
(n) + 3(0.5)
n
u(n)
ii) Xác định phương trình hiệu của hệ thống
H(z)=
)(
)(
zX
zY
=
5.0
1

+
z
z
=
1
1
5.01
1




+
z
z
Y(z) – 0.5
1−
z
Y(z) = X(z) +
1−
z
X(z)
y(n) = x(n) + x(n-1) + 0.5y(n-1)
iii) DùngMATLAB để vẽ đồ thị điểm không và điểm cực của hệ thống
b =[1,1];
a=[1,-0.5];
zplane(b,a)
iv) Tìm ngõ ra y(n) nếu ngõ vào x(n)= 3cos(
π
n/3)u(n)
x(n) = 3cos(
π
n/3)u(n)
X(z) =
21
1
)
3
(cos21

)
3
(cos1
−−

+−

zz
z
π
π
, |z|
1〉
X(z) =
21
1
1
5.01
−−

+−

zz
z
Y(z)= H(z)X(z)=
1
1
5.01
1




+
z
z
x
21
1
1
5.01
−−

+−

zz
z
=
21
1
1
1
−−

+−
+
zz
z
Dùng MATLAP
b =[1,1];
a=[1,-1,1];

[R,p,C]=residuez(b,a)
R =
0.5000 - 0.8660i
0.5000 + 0.8660i
p =
0.5000 + 0.8660i
0.5000 - 0.8660i
C =
[]
Y(z)=
13/13/
1
866.05.0
1
866.05.0
−−−

+
+


ze
j
ze
j
jj
ππ
y(n)= (
j866.05.0 −
)e

3/
π
jn
u(n) + (
j866.05.0 +
)e
3/
π
jn−
u(n)
6.10) Using the conjugate symmetry property of the DFT
H(k) =



−=−
=
1, ,1),(*
0),0(
MkkMH
kH
and the conjugate symmetry of the W
k
M

factor, show that (6.12) can be put the
form (6.13) and (6.14) for real FIR filters
W
k
M


= W
kM
M

= (W
k
M
)*
H(z) = (


=




1
0
1k-
M
W1
)(
)
1
(
M
k
M
z

kH
M
z
(1)
Can be put in the form
H(z) =
}
11
1
1
)2/(
1
)0(
)(|)(|2
1
−−
=

+
+

+





z
MH
z

H
zHkH
M
z
L
k
k
M
Where L=
2
1−M
for M odd, L =
1
2

M
for M even, and
2
0.8 , 60
s
w Rp dB
π
= =
1
0.35 , 1
p
w Rp dB
π
= =
2

0.65 , 1
p
w Ap dB
π
= =
1
0.2 , 60
s
w As dB
π
= =
H
k
(z) =
21
1
)
2
cos(21
]
2
)(cos[)](cos[
−−

+−
−∠−∠
z
M
k
z

M
k
kHzkH
π
π
Proof. The sum in (1) can be expressed as (assuming M even)
H(z) =







+
+
+

+










∑ ∑


=
−−

−=
−−−−

12/
1
1
1
12/
111
1
)(
1
)2/(
1
)(
1
)0(1
M
k
k
M
M
Mk
k
M
M

zW
kH
z
MH
zW
kH
z
H
M
z
=






+
+

+


+











∑ ∑

=
−−−−

−=
−−

12/
1
111
1
12/
1
1
)2/(
1
)0(
*)(1
)(*
1
)(1
M
k
k
M

M
Mk
k
M
M
z
MH
z
H
zW
kMH
zW
kH
M
z
=






+
+

+

+











∑ ∑

=
−−−−

=
−−

12/
1
111
12/
1
1
1
)2/(
1
)0(
*)(1
)(*
1
)(1

M
k
k
M
M
k
k
M
M
z
MH
z
H
zW
kH
zW
kH
M
z
=






+
+

+

−−
−+−











=
−−−−−−
−−−−

12/
1
1111
11
1
)2/(
1
)0(
*)(1][1[
)(*)(**))(()(
1
M
k

k
M
k
M
k
M
k
M
M
z
MH
z
H
zWzW
zWkHkHzWkHkH
M
z
Consider
11
11
*)(1][1[
)(*)(**))(()(
−−−−
−−−−
−−
−+−
zWzW
zWkHkHzWkHkH
k
M

k
M
k
M
k
M
=
21
11
)*]([21
)(**))(()(*)(
−−−−
−−−−
++−
−−+
zWWz
zWkHzWkHkHkH
k
M
k
M
k
M
k
M
=
21
1
)
2

cos(21
]
2
)(cos[|)(|2)](cos[|)(|2
−−

+−
−∠−∠
z
M
k
z
M
k
kHkHzkHkH
π
π
=2|H(k)|H
)(z
k
)(z
k
Which completes the proof.
7) Thiết kế bộ lọc thông dải kiểu FIR bằng phương pháp lấy mẫu tần số :
Bài toán thiết kế:
Cạnh thấp dải chắn:
Cạnh thấp dải thông:
Cạnh cao dải thông:
Cạnh cao dải chắn:
Chúng ta chọn M=40 để chúng ta có 2 mẫu trong dải chuyển tiếp, đưa vào tần số lấy

mẫu trong dải chuyển tiếp là T
1
và T
2
Các mẫu của đáp ứng độ lớn:
{
{
{
{
{
1 2 2 1 1 2 2 1
5 7 9 7 4
(w) [0, ,0,T ,T ,1, ,1,T ,T ,0, ,0,T ,T ,1, ,1,T ,T ,0, ,0]
r
H
=
Tối ưu các giá trị T
1
và T
2
với M=40 và 7 mẫu ở trong dải thông:

T
1
= 0.10902 và T
2
= 0.59417456
Chương trình thi hành bằng MTLAB
Trong chương trình có sử dụng đến các hàm Hr_type2 và freqz_m như sau:
Hr_type2:

function [Hr,w,b,L] = Hr_Type2(h);
%
%
M = length(h);
L = M/2;
b = 2*[h(L:-1:1)]; % 1x(L+1) row vector
n = [1:1:L]; n = n-0.5;
w = [0:1:500]'*pi/500;
Hr = cos(w*n)*b';
freqz_m:
function [db,mag,pha,grd,w]=freqz_m(b,a);
% Modified version of freqz subroutine
%
% [db,mag,pha,grd,w]=freqz_m(b,a);
% db=Relative magnitude in dB computed over 0 to pi radians
% mag=absolute magnitude computed over 0 to pi radians
% grd= Group delay over 0 to pi radians
% w=501 frequency samples between 0 to pi radians
% b=numerator polynomial of H(z) (for FIR: a=h)
% a=demonitor polynomial of H(z) (for FIR: a=[1])
%
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:1:501))';w=(w(1:1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(b,a,w);
Chương trình chính:
% THIET KE BO LOC FIR THONG DAI SU DUNG PP LAY MAU TAN SO
% Cac thong so cua bo loc:

% ws1=0.2pi, wp1=0.35pi, wp2=0.65pi, ws2=0.8pi,
Rp=1dB, As=60dB
% T2 = 0.59417456, T1=0.109021
M = 40; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l;
T1 = 0.109021; T2 = 0.59417456;
Hrs =
[zeros(1,5),T1,T2,ones(1,7),T2,T1,zeros(1,9),T1,T2,ones(1,7)
,T2,T1,zeros(1,4)];
Hdr = [0,0,1,1,0,0]; wdl = [0,0.2,0.35,0.65,0.8,1];
k1 = 0:floor((M-1)/2); k2 = floor((M-1)/2)+1:M-1;
angH = [-alpha*(2*pi)/M*k1, alpha*(2*pi)/M*(M-k2)];
H = Hrs.*exp(j*angH);
h = real(ifft(H,M));
[db,mag,pha,grd,w] = freqz_m(h,1);
[Hr,ww,a,L] = Hr_Type2(h);
subplot(1,1,1)
subplot(2,2,1);plot(wl(1:21)/pi,Hrs(1:21),'o',wdl,Hdr);
axis([0,1,-0.1,1.1]); title('Bandpass: M=40,T1=0.5941,
T2=0.109')
xlabel(' '); ylabel('Hr(k)')
set(gca,'XTickMode','manual','XTick',
[0,0.2,0.35,0.65,0.8,1])
set(gca,'YTickMode','manual','YTick',[0,0.109,0.5941,1]);
grid
subplot(2,2,2); stem(l,h); axis([-1,M,-0.4,0.4])
title('Impulse response');ylabel('h(n)');text(M+1,-0.4,'')
subplot(2,2,3); plot(ww/pi,Hr,wl(1:21)/pi,Hrs(1:21),'o');
axis([0,1,-0.1,1.1]); title('Amplitude response')
xlabel('Frequency in pi unit'); ylabel('Hr(w)')
set(gca,'XTickMode','manual','XTick',

[0,0.2,0.35,0.65,0.8,1])
set(gca,'YTickMode','manual','YTick',
[0,0.109,0.5941,1]);grid
subplot(2,2,4);plot(w/pi,db); axis([0,1,-100,10]); grid
title('Magnitude response'); xlabel('Frequency in pi unit');
ylabel('Decibel');
set(gca,'XTickMode','Manual','XTick',
[0,0.2,0.35,0.65,0.8,1]);
set(gca,'YTickMode','Manual','YTick',[-60;0]);
set(gca,'YTickLabelMode','manual','YTickLabels',['60';' 0'])
Kết quả chương trình:
7.23
7.22) A digital signal x(n) contains a sinusoid of frenquency
2/
π
and a Gaussian
noise
)(n
ω
of zero mean and unit variance; that is,
x(n) = 2 cos
)(
2
n
n
ω
π
+
We want to filter out the noise component using a 50
th

-order causal and linear-phase
FIR filter.
Using MATLAB:
%% Specifications
N = 50; % Order of the filter
w0 = 0.5*pi; % Center frequency
Bandwidth = 0.02*pi; % Bandwidth
%
% Deltaw = Transition bandwidth (iteration variable)
%
wp1 = w0-Bandwidth/2; wp2 = w0+Bandwidth/2;
% (a) Design
Deltaw = 0.02*pi; % Initial guess
ws1=wp1-Deltaw; ws2=wp2+Deltaw;
F=[0, ws1, wp1, wp2, ws2, pi]/pi;
m=[0,0,1,1,0,0];
h=remez(50,F,m);
[db,mag,pha,grd,w]=freqz_m(h,1);
delta_w = pi/500;
Asd = floor(-max(db([1:floor(ws1/delta_w)]))); % Actual Attn
Asd =13;
% Next iteration
Deltaw = Deltaw+0.01*pi;
ws1=wp1-Deltaw; ws2=wp2+Deltaw;
F=[0, ws1, wp1, wp2, ws2, pi]/pi;
h=remez(50,F,m);
[db,mag,pha,grd,w]=freqz_m(h,1);
delta_w = pi/500;
Asd = floor(-max(db([1:floor(ws1/delta_w)]))); % Actual Attn
Asd = 20

% Next iteration
Deltaw = Deltaw+0.01*pi;
ws1=wp1-Deltaw; ws2=wp2+Deltaw;
F=[0, ws1, wp1, wp2, ws2, pi]/pi;
h=remez(50,F,m);
[db,mag,pha,grd,w]=freqz_m(h,1);
delta_w = pi/500;
Asd = floor(-max(db([1:floor(ws1/delta_w)]))); % Actual Attn
Asd = 26
% Next iteration
Deltaw = Deltaw+0.01*pi;
ws1=wp1-Deltaw; ws2=wp2+Deltaw;
F=[0, ws1, wp1, wp2, ws2, pi]/pi;
h=remez(50,F,m);
[db,mag,pha,grd,w]=freqz_m(h,1);
delta_w = pi/500;
Asd = floor(-max(db([1:floor(ws1/delta_w)]))), % Actual Attn
Asd =30
Hf_1 = figure('Units','normalized','position',[0.1,0.1,0.8,0.8],'color',[0,0,0]);
set(Hf_1,'NumberTitle','off','Name','P7.22a');
plot(w/pi,db); axis([0,1,-50,0]); title('Log-Magnitude Response in P7.22a');
xlabel('frequency in pi units'); ylabel('DECIBELS')
set(gca,'XTickMode','manual','XTick',[0;ws1/pi;ws2/pi;1],'fontsize',10)
set(gca,'YTickMode','manual','YTick',[-30;0])
set(gca,'YTickLabelMode','manual','YTickLabels',[' 30';' 0 '],'fontsize',10);grid
b) The time-domain response of the filter. MATLAB script:
% (b) Time-domain Response
n = [0:1:200]; x = 2*cos(pi*n/2)+randn(1,201); y = filter(h,1,x);
Hf_2 = figure('Units','normalized','position',[0.1,0.1,0.8,0.8],'color',[0,0,0]);
set(Hf_2,'NumberTitle','off','Name','P7.22b');

subplot(211);stem(n(101:201),x(101:201));title('Input sequence x(n)')
subplot(212);stem(n(101:201),y(101:201));title('Output sequence y(n)')

×