Bài 6: THIẾT KẾ MACH LỌC FIR
6.3.1 Các phương trình thiết kế cho hàm cửa sổ và cửa sổ Kaiser
Cho những thông số kỹ thuật ban đầu của lọc là ωp, ωs, Rp và As Độ rộng vùng chuyển tiếp
Thông số β
Chương trình Matlab tạo ra một hàm đáp ứng xung thấp qua lý tưởng hd[n] như sau
function hd=ideal_lp(wc,M) % wc la tan so cat(rad) %M la do dai cua loc ly tuong
wc=input('Nhap tan so cat:'); M=input('Nhap bac loc:'); alpha=(M-1)/2;
n=[0:1:(M-1)]; m=n-alpha+eps;
hd=sin(wc*m)./(pi*m); fvtool(hd,1)
Chương trình Matlab để vẽ đáp ứng biên độ trong miền tần số của lọc theo độ lớn giá trị tuyệt đối và theo dB
function [db,mag,grd,w]= freqz_m(b,a)
% db: do lon tuong doi duoc tinh torng khoang tu 0 den pi % mag: do lon tuyet doi tinh trong khoang tu 0 den pi %pha: dap ung pha trong khoang tu 0 den pi
%w: 501 mau tan so trong khoang tu 0 den pi % b: he so cua cac da thuc tu so cua H(z) % a: he so cua cac da thuc mau so cua H(z) [H,w]=freq(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=grddelay(b,a,w);
Ví dụ: Thiết kế mạch lọc số thấp qua dùng hàm cửa số Kaiser với các thông số như sau
ωp=0.2π , ωs=0.3π, Rp=0.25dB, As=50dB.
Chương trình
wp = 0.2*pi; ws = 0.3*pi; As = 50; tr_width = ws - wp;
M = ceil((As-7.95)/(14.36*tr_width/(2*pi))+1) n=[0:1:M-1]; beta = 0.1102*(As-8.7); wc = (ws+wp)/2; hd = ideal_lp(wc,M); w_kai = (kaiser(M,beta))'; h = hd .* w_kai; [db,mag,pha,grd,w] = freqz_m(h,[1]); delta_w = 2*pi/1000;
As = -round(max(db(ws/delta_w+1:1:501))) % Min Stopband Attenuation % Plots
subplot(2,2,1); stem(n,hd); title('Ideal Impulse Response') axis([0 M-1 -0.1 0.3]); xlabel('n'); ylabel('hd(n)') ; subplot(2,2,2); stem(n,w_kai); title('Kaiser Window'); axis([0 M-1 0 1.1]);xlabel('n'); ylabel('w(n)')
subplot(2,2,3); stem(n,h);title('Actual Impulse Response') axis([0 M-1 -0.1 0.3]); xlabel('n'); ylabel('h(n)')
subplot(2,2,4);plot(w/pi,db);title('Magnitude Response in dB');grid;axis([0 1 -100 10]); xlabel('frequency in pi units'); ylabel('Decibels')
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]); set(gca,'YTickMode','manual','YTick',[-50,0])
% set(gca,'YTickLabelMode','manual','YTickLabels',['50';' 0'])
6.4 Bài tập
1) Thiết kế mạch lọc số với các thông số ωp=0.2π , ωs=0.3π, Rp=0.25dB, As=50dB sử dụng hàm cửa sổ Hamming. So sánh kết quả với hàm cửa sổ Kaiser. Bậc của lọc là bao nhiêu?
2) Cho các thông số kỹ thuật của một lọc dải qua như sau ωs1=0.2π , As=60dB
ωs2=0.8 π, As=60dB wp1=0.35 π, Rp=1dB
wp2=0.65 π, rp=1dB