Thiết kế bộ lọc IIR (MATLAB CODE - design IIR filter)

Design a Butterworth lowpass filter with specification as follows
    wp=0.2pi,    Rp=1dB
    ws=0.3pi,    As=15dB

% Butterworth Lowpass Filter Design:
%
% Digital Filter Specifications:
wp = 0.2*pi; %digital Passband freq in Hz
ws = 0.3*pi; %digital Stopband freq in Hz
Rp = 1; %Passband ripple in dB
As = 15; %Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = sqrt(1/(1+ep*ep)); % Passband Ripple
Attn = 1/(10^(As/20)); % Stopband Attenuation

% Digital Butterworth Filter Design:
[N wn]=buttord(wp/pi,ws/pi,Rp,As);
[b,a]=butter(N,wn);
%plotting
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1); plot(w/pi,mag); title('Magnitude Response')
xlabel('frequency in pi units'); ylabel('|H|'); axis([0,1,0,1.1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]); grid
subplot(2,2,3); plot(w/pi,db); title('Magnitude in dB');
xlabel('frequency in pi units'); ylabel('decibels'); axis([0,1,-40,5]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]); grid
set(gca,'YTickLabelMode','manual','YTickLabels',['50';'15';' 1';' 0'])
subplot(2,2,2); plot(w/pi,pha/pi); title('Phase Response')
xlabel('frequency in pi units'); ylabel('pi units'); axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-1,0,1]); grid
subplot(2,2,4); plot(w/pi,grd); title('Group Delay')
xlabel('frequency in pi units'); ylabel('Samples'); axis([0,1,0,15])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0:5:15]);


Design a Chebychev-I lowpass filter with specification as follows    wp=0.2pi,    Rp=1dB
    ws=0.3pi,    As=15dB

% Use of the CHEBY1 function
%
% Digital Filter Specifications:
wp = 0.2*pi; %digital Passband freq in Hz
ws = 0.3*pi; %digital Stopband freq in Hz
Rp = 1; %Passband ripple in dB
As = 15; %Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = sqrt(1/(1+ep*ep)); % Passband Ripple
Attn = 1/(10^(As/20)); % Stopband Attenuation

% Calculations of Chebyshev-I Filter Parameters:
[N,wn] = cheb1ord(wp/pi,ws/pi,Rp,As);

% Digital Chebyshev-I Filter Design:
%wn = wp/pi; %Digital Passband freq in pi units
[b,a]=cheby1(N,Rp,wn);

% Plotting
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1); plot(w/pi,mag); title('Magnitude Response')
xlabel('frequency in pi units'); ylabel('|H|'); axis([0,1,0,1.1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]); grid
subplot(2,2,3); plot(w/pi,db); title('Magnitude in dB');
xlabel('frequency in pi units'); ylabel('decibels'); axis([0,1,-40,5]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]); grid
set(gca,'YTickLabelMode','manual','YTickLabels',['50';'15';' 1';' 0'])
subplot(2,2,2); plot(w/pi,pha/pi); title('Phase Response')
xlabel('frequency in pi units'); ylabel('pi units'); axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-1,0,1]); grid
subplot(2,2,4); plot(w/pi,grd); title('Group Delay')
xlabel('frequency in pi units'); ylabel('Samples'); axis([0,1,0,15])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0:5:15]);
 Design a Chebychev-II lowpass filter with specification as follows    wp=0.2pi,    Rp=1dB
    ws=0.3pi,    As=15dB

% Digital Filter Specifications:
wp = 0.2*pi; %digital Passband freq in Hz
ws = 0.3*pi; %digital Stopband freq in Hz
Rp = 1; %Passband ripple in dB
As = 15; %Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = sqrt(1/(1+ep*ep)); % Passband Ripple
Attn = 1/(10^(As/20)); % Stopband Attenuation

[N,wn] = cheb2ord(wp/pi,ws/pi,Rp,As);
% Digital Chebyshev-II Filter Design:
wn = ws/pi; %Digital Stopband freq in pi units
[b,a]=cheby2(N,As,wn);
% Plotting
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1); plot(w/pi,mag); title('Magnitude Response')
xlabel('frequency in pi units'); ylabel('|H|'); axis([0,1,0,1.1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]); grid
subplot(2,2,3); plot(w/pi,db); title('Magnitude in dB');
xlabel('frequency in pi units'); ylabel('decibels'); axis([0,1,-40,5]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]); grid
set(gca,'YTickLabelMode','manual','YTickLabels',['50';'15';' 1';' 0'])
subplot(2,2,2); plot(w/pi,pha/pi); title('Phase Response')
xlabel('frequency in pi units'); ylabel('pi units'); axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-1,0,1]); grid
subplot(2,2,4); plot(w/pi,grd); title('Group Delay')
xlabel('frequency in pi units'); ylabel('Samples'); axis([0,1,0,15])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0:5:15]);
 Design a Elliptic lowpass filter with specification as follows    wp=0.2pi,    Rp=1dB
    ws=0.3pi,    As=15dB

% Use of the ELLIP function
%
% Digital Filter Specifications:
wp = 0.2*pi; %digital Passband freq in Hz
ws = 0.3*pi; %digital Stopband freq in Hz
Rp = 1; %Passband ripple in dB
As = 15; %Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = sqrt(1/(1+ep*ep)); % Passband Ripple
Attn = 1/(10^(As/20)); % Stopband Attenuation

% Calculations of Elliptic Filter Parameters:
[N,wn] = ellipord(wp/pi,ws/pi,Rp,As);

% Digital Elliptic Filter Design:
[b,a]=ellip(N,Rp,As,wn);
% Plotting
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1); plot(w/pi,mag); title('Magnitude Response')
xlabel('frequency in pi units'); ylabel('|H|'); axis([0,1,0,1.1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]); grid
subplot(2,2,3); plot(w/pi,db); title('Magnitude in dB');
xlabel('frequency in pi units'); ylabel('decibels'); axis([0,1,-40,5]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-50,-15,-1,0]); grid
set(gca,'YTickLabelMode','manual','YTickLabels',['50';'15';' 1';' 0'])
subplot(2,2,2); plot(w/pi,pha/pi); title('Phase Response')
xlabel('frequency in pi units'); ylabel('pi units'); axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[-1,0,1]); grid
subplot(2,2,4); plot(w/pi,grd); title('Group Delay')
xlabel('frequency in pi units'); ylabel('Samples'); axis([0,1,0,15])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickmode','manual','YTick',[0:5:15]);
 Design a Chebyshev-I  highpass filter with specification as follows    wp=0.6pi,    Rp=1dB
    ws=0.4586pi,    As=15dB

% Chebyshev-1 Highpass Filter Design:
% Use of the CHEBY1 function
%
% Digital Filter Specifications: % Type: Chebyshev-I highpass
ws = 0.4586*pi; % Dig. stopband edge frequency
wp = 0.6*pi; % Dig. passband edge frequency
Rp = 1; % Passband ripple in dB
As = 15; % Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = 10 ^ (-Rp/20); % Passband ripple
Attn = 10 ^ (-As/20); % Passband attenuation

% Calculations of Chebyshev-I Filter Parameters:
[N,wn] = cheb1ord(wp/pi,ws/pi,Rp,As);

% Digital Chebyshev-I Highpass Filter Design:
[b,a] = cheby1(N,Rp,wn,'high');

% Plotting:
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1);plot(w/pi,mag);grid;title('Magnitude Response')
xlabel('Digital frequency in pi units'); axis([0,1,0,1])
set(gca,'XTickMode','manual','XTick',[0;ws/pi;wp/pi;1])
set(gca,'XTickLabelMode','manual','XTickLabels',['  0 ';'0.46';'0.6 ';'  1 '])
set(gca,'YTickMode','manual','YTick',[0;Attn;Ripple;1])
subplot(2,2,3);plot(w/pi,db);grid;title('Magnitude in dB')
xlabel('frequency in pi units'); axis([0,1,-30, 0]);
ylabel('decibels')
set(gca,'XTickMode','manual','XTick',[0;ws/pi;wp/pi;1])
set(gca,'XTickLabelMode','manual','XTickLabels',['  0 ';'0.46';'0.6 ';'  1 '])
set(gca,'YTickMode','manual','YTick',[-30;-As;-Rp;0])
set(gca,'YTickLabelMode','manual','YTickLabels',['30';'15';' 1';' 0'])
subplot(2,2,2);plot(w/pi,pha/pi);grid;title('Phase Response')
xlabel('frequency in pi units');ylabel('phase in pi units'); axis([0,1,-1,1])
set(gca,'XTickMode','manual','XTick',[0;ws/pi;wp/pi;1])
set(gca,'XTickLabelMode','manual','XTickLabels',['  0 ';'0.46';'0.6 ';'  1 '])
subplot(2,2,4);plot(w/pi,grd);grid;title('Group Delay')
xlabel('frequency in pi units');
ylabel('delay in samples')
set(gca,'XTickMode','manual','XTick',[0;ws/pi;wp/pi;1])
set(gca,'XTickLabelMode','manual','XTickLabels',['  0 ';'0.46';'0.6 ';'  1 '])
 Design a Elliptic bandpass filter with specification as follows    ws=0.3pi,    As=40dB
    wp=0.4pi,    Rp=1dB
    wp=0.6pi,    Rp=1dB
    ws=0.75pi,   As=40dB

% Use of the ELLIP function
%
% Digital Filter Specifications: % Type: Elliptic Bandpass
ws = [0.3*pi 0.75*pi]; % Dig. stopband edge frequency
wp = [0.4*pi 0.6*pi]; % Dig. passband edge frequency
Rp=1;% Passband ripple in dB
As = 40; % Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = 10 ^ (-Rp/20); % Passband ripple
Attn = 10 ^ (-As/20);% Passband attenuation

% Calculations of Elliptic Filter Parameters:
[N,wn] = ellipord(wp/pi,ws/pi,Rp,As);

% Digital Elliptic Bandpass Filter Design:
[b,a] = ellip(N,Rp,As,wn);

% Plotting:
figure(1); subplot(1,1,1)
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1);plot(w/pi,mag);grid;title('Magnitude Response')
xlabel('frequency in pi units'); axis([0, 1, 0, 1])
set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.75;1])
set(gca,'YTickMode','manual','YTick',[0,Ripple,1]);
subplot(2,2,3);plot(w/pi,db);grid;title('Magnitude in dB')
xlabel('frequency in pi units'); axis([0 1 -50 0]);
set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.75;1])
set(gca,'YTickMode','manual','YTick',[-40;0])
set(gca,'YTickLabelMode','manual','YTickLabels',['40';' 0'])
subplot(2,2,2);plot(w/pi,pha/pi);grid;title('Phase Response')
xlabel('frequency in pi units');ylabel('phase in pi units')
set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.75;1])
subplot(2,2,4);plot(w/pi,grd);grid;title('Group Delay')
xlabel('frequency in pi units'); ylabel('samples')
set(gca,'XTickMode','manual','XTick',[0;0.3;0.4;0.6;0.75;1])
 Design a Chebyshev-II bandstop filter with specification as follows    wp=0.3pi,    Rp=1dB
    ws=0.4pi,    As=40dB
    ws=0.6pi,    As=40dB
    wp=0.75pi,   Rp=1dB

% Chebyshev-2 Bandstop Filter Design:
% Use of the CHEBY2 function
%
% Digital Filter Specifications: % Type: Chebyshev-II Bandstop
ws = [0.4*pi 0.7*pi]; % Dig. stopband edge frequency
wp = [0.25*pi 0.8*pi]; % Dig. passband edge frequency
Rp = 1;% Passband ripple in dB
As = 40; % Stopband attenuation in dB
ep = sqrt(10^(Rp/10)-1);
Ripple = 10 ^ (-Rp/20); % Passband ripple
Attn = 10 ^ (-As/20); % Passband attenuation

% Calculations of Chebyshev-II Filter Parameters:
[N,wn] = cheb2ord(wp/pi,ws/pi,Rp,As);

% Digital Chebyshev-II Bandstop Filter Design:
[b,a] = cheby2(N,As,ws/pi,'stop');

% Plotting:
[db,mag,pha,grd,w] = freqz_m(b,a);
subplot(2,2,1);plot(w/pi,mag);grid;title('Magnitude Response')
xlabel('Digital frequency in pi units'); axis([0 1 0 1])
set(gca,'XTickMode','manual','XTick',[0;0.25;0.4;0.7;0.8;1])
set(gca,'YTickMode','manual','YTick',[0;Ripple;1])
subplot(2,2,3);plot(w/pi,db);grid;title('Magnitude in dB')
xlabel('Digital frequency in pi units'); axis([0 1 -50 0]);
set(gca,'XTickMode','manual','XTick',[0;0.25;0.4;0.7;0.8;1])
set(gca,'YTickMode','manual','YTick',[-40;0])
subplot(2,2,2);plot(w/pi,pha/pi);grid;title('Phase Response')
xlabel('Digital frequency in pi units');ylabel('phase in pi units')
set(gca,'XTickMode','manual','XTick',[0;0.25;0.4;0.7;0.8;1])
subplot(2,2,4);plot(w/pi,grd);grid;title('Group Delay')
xlabel('Digital frequency in pi units');
set(gca,'XTickMode','manual','XTick',[0;0.25;0.4;0.7;0.8;1])
subplot;

Nhận xét

Bài đăng phổ biến từ blog này

Dòng điện, điện áp 1 chiều và các định luật cơ bản

Dòng điện 1 chiều (DC) là gì ?

Các cách mắc điện trở

Dòng điện xoay chiều

Biến áp, Triết áp, Phân loại điện trở