Hang Nguyen Thanh-chinh Sua

11
REPORT LAB DSP2 I/ PROBLEM 7.7 : 1. Yêu cầu : Thiết kế bộ lọc chắn dải sử dụng cửa sổ Hanning với các thông số sau: lower passband edge: 0.3π lower stopband edge: 0.4π upper stopband edge: 0.6π upper passband edge: 0.7π passband ripple: 0.5dB stopband attenuation: 40 dB 2. Giới thiệu về phương pháp thiết kế bộ lọc bằng phương pháp cửa sổ: Ý tưởng cơ bản của phương pháp cửa sổ là tìm ra đáp ứng xung của bộ lọc lý tưởng sau đó cắt xén hai đầu (hoặc nhân với một hàm cửa sổ) dãy đáp ứng xung đó sao cho thu được một bộ lọc FIR pha tuyến tính,đồng thời là nhân quả. a. Các bước thiết kế bộ lọc bằng phương pháp Window: - Chuyển các thông số Rp,As thành δ1, δ2.

Transcript of Hang Nguyen Thanh-chinh Sua

Page 1: Hang Nguyen Thanh-chinh Sua

REPORT

LAB DSP2I/ PROBLEM 7.7 : 1. Yêu cầu:Thiết kế bộ lọc chắn dải sử dụng cửa sổ Hanning với các thông số sau:

lower passband edge: 0.3πlower stopband edge: 0.4πupper stopband edge: 0.6πupper passband edge: 0.7πpassband ripple: 0.5dBstopband attenuation: 40 dB

2. Giới thiệu về phương pháp thiết kế bộ lọc bằng phương pháp cửa sổ: Ý tưởng cơ bản của phương pháp cửa sổ là tìm ra đáp ứng xung của bộ lọc lý tưởng sau đó cắt xén hai đầu (hoặc nhân với một hàm cửa sổ) dãy đáp ứng xung đó sao cho thu được một bộ lọc FIR pha tuyến tính,đồng thời là nhân quả.a. Các bước thiết kế bộ lọc bằng phương pháp Window:- Chuyển các thông số Rp,As thành δ1, δ2.- Chọn δ nhỏ hơn rồi chuển về lại Rp,As- Tính transition width (độ rộng vùng chuyển đổi)- Chọn độ dài bộ lọc M (tùy theo yêu cầu bộ lọc cần thiết kế của đề bài mà chọn M là chẵn hay lẻ)- Tạo cửa sổ (tùy theo yêu cầu đề bài thường là dựa vào thông số As)- Tính các tần số cắt wc- Tính đáp ứng xung của bộ lọc lý tưởng- Tính đáp ứng xung thực tế- Tính các thông số của bộ lọc: dB, mag, phase, grd, w- Tính As,Rp thực tế

Page 2: Hang Nguyen Thanh-chinh Sua

b. Nhược điểm của phương pháp window:- Không thể xác định delta1 và delta2 một cách đồng thời

- Không thỏa mãn đồng thời 2 thông số As,Rp

3. Chương trình và giải thích chương trình:%thiet ke bo loc chan dai voi các thông so sau:wp1 = 0.3*pi; % lower passband edgews1 = 0.4*pi; % lower stopband edgews2 = 0.6*pi; % upper stopband edgewp2 = 0.7*pi; % upper passband edgeRp = 0.5; % passband rippleAs = 40; % stopband attenuation [delta1,delta2] = db2delta(Rp,As);%Chuyen Rp,As thanh delta1, delta2.

if (delta1 < delta2)delta2 = delta1; disp('Delta1 is smaller than delta2')[Rp,As] = delta2db(delta1,delta2)End %Chon delta nho hon va chuyen ve lai Rp va As.

tr_width = min((ws1-wp1),(wp2-ws2));%Tinh transition band. M = ceil(6.2*pi/tr_width); %Tinh M tu cong thuc cua kieu lay cua so hanningM = 2*floor(M/2)+1, % chon M le vi day la bo loc chan dai

n = 0:M-1;w_han = (hanning(M))'; %Tao cua so hanning.wc1 = (ws1+wp1)/2; wc2 = (ws2+wp2)/2;%Tinh cac wc. Wc1=wc2 khong the dieu khien doc lap voi nhauhd = ideal_lp(pi,M)+ideal_lp(wc1,M)-ideal_lp(wc2,M); %Dap ung xung ly tuong cho bo loc chan dai.

h = hd .* w_han; %Tinh dap ung xung thuc te.

[db,mag,pha,grd,w] = freqz_m(h,1);%Xuat ra các thong so cua bo loc(db:do lon %tuong doi (dB);mag:do lon tuyet doi;pha:dap ung phase;grd:tre nhom),voi dau %vao la b=h[],a=[1] cua bo loc FIR.

delta_w = pi/500; %Do phan giai.Asd = floor(-max(db((ws1/delta_w)+1:(ws2/delta_w)+1))), % As thuc te. Rpd = -min(min(db(1:1:wp1/delta_w)),min(db(wp2/delta_w+1:1:501)))%Rp thuc te.

% Ve do thi:Hf_1 = figure('Units','normalized','position',[0.1,0.1,0.8,0.8],'color',[1,1,0]);%Thiet lap cac thong so cua do thi:Units:don vi tinh trong do thi;Position:vi %tri;color:mau nen dua tren vector mau [R-G B]set(Hf_1,'NumberTitle','off','Name','P7.7');%Khong danh so do thi,dat ten do thi la P7.7.subplot(2,2,1); stem(n,hd); title('Ideal Impulse Response');%ve phan do thi hd.axis([-1,M,min(hd)-0.1,max(hd)+0.1]); xlabel('n'); ylabel('hd(n)')%gioi han cua cua so do thi va tieu de cac truc.

Page 3: Hang Nguyen Thanh-chinh Sua

set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)%Thiet lap cac thong so ve lay gia tri cac diem tren truc x,kich co chu la 10 %cho do thi hien tai.subplot(2,2,2); stem(n,w_han); title('Hanning Window');axis([-1,M,-0.1,1.1]); xlabel('n'); ylabel('w_ham(n)')set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)set(gca,'YTickMode','manual','YTick',[0;1],'fontsize',10)subplot(2,2,3); stem(n,h); title('Actual Impulse Response');axis([-1,M,min(hd)-0.1,max(hd)+0.1]); xlabel('n'); ylabel('h(n)')set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)subplot(2,2,4); plot(w/pi,db); title('Magnitude Response in dB');axis([0,1,-As-30,5]); xlabel('frequency in pi units'); ylabel('Decibels')set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.7;1])set(gca,'XTickLabelMode','manual','XTickLabels',[' 0 ';'0.3';'0.4';'0.6';'0.7';' 1 '],...'fontsize',10)set(gca,'YTickMode','manual','YTick',[-40;0])set(gca,'YTickLabelMode','manual','YTickLabels',[' 40';' 0 ']);grid%Tuong tu nhu tren.suptitle('Problem P7.7: Bandstop Filter');%Tieu de cho do thi chinh.

4. K ết quả : *Các giá trị: M = 63, Asd = 43, Rpd = 0.0884

* Các hàm sử dụng:function [db,mag,pha,grd,w] = freqz_m(b,a); % Modified version of freqz subroutine % ------------------------------------

Page 4: Hang Nguyen Thanh-chinh Sua

% [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 % pha = Phase response in radians 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: b=h) % a = denominator polynomial of H(z) (for FIR: a=[1])[H,w] = freqz(b,a,1000,'whole');% su dung n=1000 diem lay mau quanh duong tron don vi. Vector tan so w co do %dai n va co gia tri tu 0 den 2pi moi mau. H = (H(1:1:501))'; w = (w(1:1:501))'; mag = abs(H); db = 20*log10((mag+eps)/max(mag)); pha = angle(H); % pha = unwrap(angle(H)); grd = grpdelay(b,a,w); % grd = diff(pha); % grd = [grd(1) grd]; % grd = [0 grd(1:1:500); grd; grd(2:1:501) 0]; % grd = median(grd)*500/pi;function hd = ideal_lp(wc,M); % Ideal LowPass filter computation % -------------------------------- % [hd] = ideal_lp(wc,M) % hd = ideal impulse response between 0 to M-1 % wc = cutoff frequency in radians % M = length of the ideal filter % alpha = (M-1)/2; n = [0:1:(M-1)]; m = n - alpha + eps; hd = sin(wc*m) ./ (pi*m);function [d1,d2] = db2delta(Rp,As) % Conversion from Relative dB specs to Absolute delta specs. % ---------------------------------------------------------- % [d1,d2] = db2delta(Rp,As) % d1 = Passband tolerance % d2 = Stopband tolerance % Rp = Passband ripple % As = Stopband attenuation K = 10^(Rp/20); d1 = (K-1)/(K+1); d2 = (1+d1)*(10^(-As/20));function [Rp,As] = delta2db(delta1,delta2) % Conversion from Absolute delta specs to Relative dB specs % --------------------------------------------------------- % [Rp,As] = delta2db(delta1,delta2) % Rp = Passband ripple % As = Stopband attenuation % d1 = Passband tolerance % d2 = Stopband toleranceCông thức Rp, As: Rp = -20*log10((1-delta1)/(1+delta1)); As = -20*log10(delta2/(1+delta1));

Page 5: Hang Nguyen Thanh-chinh Sua

KAISER%thiet ke bo loc chan dai voi các thông so sau:wp1 = 0.3*pi; % lower passband edgews1 = 0.4*pi; % lower stopband edgews2 = 0.6*pi; % upper stopband edgewp2 = 0.7*pi; % upper passband edgeRp = 0.5; % passband rippleAs = 40; % stopband attenuation tr_width = min((ws1-wp1),(wp2-ws2));%Tinh transition band. M = ceil((As-7.95)/(14.36*tr_width/(2*pi))+1)+3%Tinh M tu cong thuc cua so kaiser n = 0:M-1;beta=0.5842*((As-21)^(0.4))+0.07886*(As-21);

w_kai = (kaiser(M,beta))'; %Tao cua so kaiser.wc1 = (ws1+wp1)/2; wc2 = (ws2+wp2)/2; %Tinh cac wc.hd = ideal_lp(pi,M)+ideal_lp(wc1,M)-ideal_lp(wc2,M);%Dap ung xung ly tuong cho bo loc chan dai.

h = hd .* w_kai; %Tinh dap ung xung thuc te.

[db,mag,pha,grd,w] = freqz_m(h,1);%Xuat ra các thong so cua bo loc(db:do lon %tuong doi (dB);mag:do lon tuyet doi;pha:dap ung phase;grd:tre nhom),voi dau %vao la b=h[],a=[1] cua bo loc FIR.

delta_w = pi/500; %Do phan giai.Asd = floor(-max(db((ws1/delta_w)+1:(ws2/delta_w)+1))), % As thuc te. Rpd = -min(min(db(1:1:wp1/delta_w)),min(db(wp2/delta_w+1:1:501)))% Rp thuc te % Ve do thi:Hf_1 = figure('Units','normalized','position',[0.1,0.1,0.8,0.8],'color',[1,1,0]);%Thiet lap cac thong so cua do thi:Units:don vi tinh trong do thi;Position:vi %tri;color:mau nen dua tren vector mau [R-G B]set(Hf_1,'NumberTitle','off','Name','P7.7');%Khong danh so do thi,dat ten do thi la P7.7.subplot(2,2,1); stem(n,hd); title('Ideal Impulse Response');%ve phan do thi hd.axis([-1,M,min(hd)-0.1,max(hd)+0.1]); xlabel('n'); ylabel('hd(n)')%gioi han %cua cua so do thi va tieu de cac truc.set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)%Thiet lap cac thong so ve lay gia tri cac diem tren truc x,kich co chu la 10 %cho do thi hien tai.subplot(2,2,2); stem(n,w_kai); title('Kaiser Window');axis([-1,M,-0.1,1.1]); xlabel('n'); ylabel('w_kai(n)')set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)set(gca,'YTickMode','manual','YTick',[0;1],'fontsize',10)subplot(2,2,3); stem(n,h); title('Actual Impulse Response');axis([-1,M,min(hd)-0.1,max(hd)+0.1]); xlabel('n'); ylabel('h(n)')set(gca,'XTickMode','manual','XTick',[0;M-1],'fontsize',10)subplot(2,2,4); plot(w/pi,db); title('Magnitude Response in dB');axis([0,1,-As-30,5]); xlabel('frequency in pi units'); ylabel('Decibels')

Page 6: Hang Nguyen Thanh-chinh Sua

set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.7;1])set(gca,'XTickLabelMode','manual','XTickLabels',[' 0 ';'0.3';'0.4';'0.6';'0.7';' 1 '],...'fontsize',10)set(gca,'YTickMode','manual','YTick',[-40;0])set(gca,'YTickLabelMode','manual','YTickLabels',[' 40';' 0 ']);grid%Tuong tu nhu tren.suptitle('Problem P7.7: Bandstop Filter');%Tieu de cho do thi chinh.

* Đồ thị:

* Ket qua: M=49, As=44, Rp=0.0907

II/ PROBLEM 7.14:1. Yêu cầu: Thiết kế bộ lọc chắn dải của Problem 7.7 sử dụng phương pháp lấy mẫu tần số. Chọn bậc của bộ lọc sao cho có 1 mẫu nằm trong vùng transition band. Sử dụng giá trị tối ưu cho mẫu này.

2. Giới thiệu phương pháp thiết kế bộ lọc bằng phương pháp lấy mẫu tần số: Cách tiếp cập này dựa trên sự kiện là hàm truyền hệ thống H(z) có thể thu được từ các mẫu H(k) của đáp ứng tần số H(ejw).

Page 7: Hang Nguyen Thanh-chinh Sua

- Hai cách tiếp cận thiết kế:+ Phương pháp thiết kế đơn giản: Sử dụng ý tưởng cơ bản và không đưa ra một ràng buộc nào về lỗi xấp xỉ, nghĩa là chấp nhận lỗi sinh ra do thiết kế. Phương pháp này hiếm khi được sử dụng trong thực tế.+ Phương pháp thiết kế tối ưu: cố gắng tối thiểu hoá lỗi trong dải chắn bằng cáchthay đổi các giá trị của mẫu trong dải chuyển tiếp. a. Các bước thiết kế bộ lọc bằng phương pháp lấy mẫu tần số:- Chọn chiều dài bộ lọc M- Xây dựng Hrs- Tính Hdr, angH, H(k)- Dùng biến đổi FFT ngược để tìm h(n)- Tính các thông số của bộ lọc lý tưởng- Tính các thông số As,Rp của bộ lọc thực tế- Kiểm tra lại ws,wpb. Nhược điểm của phương pháp lấy mẫu tần số:

- Không thể ràng buộc điều kiện đồng thời điều kiện về độ gợn sóng δ1 và δ2 ở cả dải thông và dải chắn

- Hàm sai số xấp xỉ phân bố không đều trên các dải và có xu hướng tăng lên khi đến gần dải chuyển tiếp

3. Các bước chọn bậc và xây dựng Hrs:

Chọn M=33:

Suy ra: -> Chọn bộ lọc Type 1

Giá trị tối ưu được chọn là:T1=0.39192505 (Dùng phương pháp tra bảng Appendix C)

5 Số 4 Số 12 Số 4Số 4Số

Page 8: Hang Nguyen Thanh-chinh Sua

4. Chương trình và giải thích chương trình:

M=33 a=ceil(0.3*M/2), b=ceil(0.2*M/2),alpha= (M-1)/2 ;%a nguyen. l=0:M-1 ; wl=(2*pi/M)*l;%Chuan bi cho viec ve do thi

delta_w=2*pi/1000;T1=0.39192505;wp1 = 0.3*pi;ws1 = 0.4*pi ;ws2 = 0.6*pi ;wp2 = 0.7*pi ;Hrs=[ones(1,1+a),T1,zeros(1,b),T1,ones(1,M-1-(2*a)-(2*b)-4),T1,zeros(1,b),T1,ones(1,a)];%Tinh Hrk1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;%Chuan bi tinh.Hdr=[1,1,0,0,1,1]; wdl=[0,0.3,0.4,0.6,0.7,1];angH=[-alpha*(2*pi)/M*k1, alpha*(2*pi)/M*(M-k2)];H=Hrs.*exp(j*angH);%H(k)

h=real(ifft(H,M));%Bien doi nguoc tim h(n)

[db,mag,pha,grd,w]=freqz_m(h,1);%Tinh cac thong so bo loc[Hr,ww,a,L]=Hr_Type1(h);

%Ve do thisubplot(2,2,1);plot(wl(1:27)/pi,Hrs(1:27),'o',wdl,Hdr);axis([0,1,-0.1,1.1]);title('Frequency Samples: M=33, T1=0.39192505')xlabel('frequency in pi units'); ylabel('Hr(k)')subplot(2,2,2);stem(l,h);axis([-1,M,-0.3,0.7]);title('Impulse Response');xlabel('n');ylabel('h(n)');subplot(2,2,3);plot(ww/pi,Hr,wl(1:27)/pi,Hrs(1:27),'o');axis([0,1,-0.2,1.2]);title('Amplitude Response');xlabel('frequency in pi units');ylabel('Hr(w)');subplot(2,2,4);plot(w/pi,db);axis([0,1,-70,10]);gridtitle('Magnitude Rsponse'); xlabel('frequency in pi units');ylabel('Decibels As=40');

* Các hàm sử dụng:

function [Hr,w,a,L] = Hr_Type1(h); % Computes Amplitude response Hr(w) of a Type-1 LP FIR filter % ----------------------------------------------------------- % [Hr,w,a,L] = Hr_Type1(h) % Hr = Amplitude Response % w = 500 frequencies between [0 pi] over which Hr is computed % a = Type-1 LP filter coefficients % L = Order of Hr % h = Type-1 LP filter impulse response M = length(h); L = (M-1)/2; a = [h(L+1) 2*h(L:-1:1)]; % 1x(L+1) row vector n = [0:1:L]; % (L+1)x1 column vector

Page 9: Hang Nguyen Thanh-chinh Sua

w = [0:1:500]'*pi/500;Hr = cos(w*n)*a';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 % pha = Phase response in radians 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: b=h) % a = denominator 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);% pha = unwrap(angle(H)); grd = grpdelay(b,a,w); % grd = diff(pha); % grd = [grd(1) grd]; % grd = [0 grd(1:1:500); grd; grd(2:1:501) 0]; % grd = median(grd)*500/pi

5. Đồ thị:

Nhận xét: Nhìn vào đồ thị, As thỏa mãn yêu cầu và As khi tra bảng bằng 42

Page 10: Hang Nguyen Thanh-chinh Sua