ĐẠ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 Đà 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ω u(n)} = 2 (1 0.5 ) 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')
Trang 1ĐẠ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
Lớp: K25.KĐT.ĐN
Đà Nẵng, 12/2012
Trang 23.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)nu(n)} = ( 1 0 5 ) 2
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
Trang 3H(z) =
5
.
0
1
z
z
5 0 1
3
h(n)= -2 (n) + 3(0.5)nu(n)
ii) Xác định phương trình hiệu của hệ thống
H(z)= X Y((z z))=
5 0
1
z
z
1 5 0 1
1
z z
Y(z) – 0.5 z 1Y(z) = X(z) + z 1X(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) =
2 1
1
) 3 (cos
2
1
) 3 (cos 1
z z
z
, |z| 1
X(z) = 1 2
1 1
5
0
1
z z
z
Trang 4Y(z)= H(z)X(z)= 1
1 5 0 1
1
z
z
1 1
5 0 1
z z
z
1 1
1
z z 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 =
[]
1
866 0 5 0 1
866 0 5
0
z e
j z
e
j
j
y(n)= (0 5 0 866j)e jn / 3u(n) + (0 5 0 866j)e jn / 3u(n)
6.10) Using the conjugate symmetry property of the DFT
H(k) =
1 , , 1 ), (
* 0 ), 0 (
M k k M H k H
and the conjugate symmetry of the WMk
factor, show that (6.12) can be put the form (6.13) and (6.14) for real FIR filters
WMk
= WM Mk
= (WM k)*
H(z) = (
01 WM-k 1
) ( )
1
k
M
z
k H M
z
(1) Can be put in the form
) 2 / ( 1
) 0 ( ) (
| ) (
| 2
1
H k H z H z H M z M
k
k M
Where L=
2
1
M
for M odd, L = 1
2
M
for M even, and
Trang 52s 0.8 , 60
w Rp dB
w Rp dB
w Ap dB
w As dB
Hk (z) =
2 1
1
)
2 cos(
2 1
]
2 ) ( cos[
)]
( cos[
z M
k z
M
k k
H z
k H
Proof The sum in (1) can be expressed as (assuming M even)
1
1 2 / 1
1
) ( 1
) 2 / ( 1
) ( 1
) 0 (
M M k
k M
M
z W
k H z
M H z
W
k H z
H M
z
/ 2 1
1
1 2 /
) 2 / ( 1
) 0 (
* ) ( 1
) (
* 1
) (
M M k
k M
M
z
M H z
H z
W
k M H z
W
k H M
z
/ 2 1
1 2 /
1
) 2 / ( 1
) 0 (
* ) ( 1
) (
* 1
) (
M k
k M
M
z
M H z
H z
W
k H z
W
k H M
z
=
/ 2 1
1 1
1
) 2 / ( 1
) 0 (
* ) ( 1 ][
1 [
) (
* ) (
*
* ) )(
( ) (
k M
k M M
z
M H z
H z
W z
W
z W k H k H z W k H k H M
z
Consider
1 1
1 1
* ) ( 1 ][
1 [
) (
* ) (
*
* ) )(
( )
(
z W z
W
z W k H k H z W k H k
H
k M
k M
k M
k M
1 1
)*]
( [
2 1
) (
*
* ) )(
( ) (
* ) (
z W
W z
z W k H z W k H k H k
H
k M
k M
k M
k M
=
2 1
1
)
2 cos(
2 1
]
2 ) ( cos[
| ) (
| 2 )]
( cos[
| ) (
|
2
z M
k z
M
k k
H k
H z
k H k
H
=2|H(k)|Hk (z) k (z)
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à T1 và T2
Các mẫu của đáp ứng độ lớn:
(w) [ 0, ,0,T ,T ,1, ,1,T ,T , 0, ,0,T ,T ,1, ,1,T ,T , 0, ,0]
r
Trang 6Tối ưu các giá trị T1 và T2 với M=40 và 7 mẫu ở trong dải thông:
T1= 0.10902 và T2 = 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:
%
%
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:
% 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;
Trang 7Hrs =
[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:
Trang 87.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 ( )
n
We want to filter out the noise component using a 50 th -order causal and linear-phase FIR filter.
Trang 9Using MATLAB:
%% Specifications
%
% 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
Trang 10Asd =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]);
Trang 11plot(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)')