We use cookies to give you the best experience possible. By continuing we’ll assume you’re on board with our cookie policy

I. Introduction

Many design techniques for IIR distinct clip filters have adopted thoughts and nomenclature developed for parallel filters, and are implemented by transforming the transportation map of an parallel ‘prototype ‘ filter into the system map of a distinct clip filter with similar features. In our undertaking we require IIR filters ( both Butterworth every bit good as Chebyshev Type I methods utilizing bilinear transmutation are tried to acquire the minimal order filter that meets the above mentioned specifications ) . Harmonizing to our job the passband magnitude is changeless to within 1dB for frequences below 1000Hz, and stop-band fading is greater than 15dB for frequences greater than 1500Hz. The sampling frequence, Fs, is 10000Hz.

II. Analogue Filters

Classical theory for parallel filters runing below about 100 MHz is by and large based on “ lumped parametric quantity ” resistances, capacitances, inductances and operational amplifiers ( with feedback ) which obey LTI differential equations:

GET EVEN A BETTER ESSAY WE WILL WRITE A CUSTOM
ESSAY SAMPLE ON
Design techniques TOPICS SPECIFICALLY FOR YOU

[ I ( T ) = C dv ( T ) / dt, V ( T ) = L di ( T ) / dt, V ( T ) = I ( T ) R, V 0 ( T ) = A V I ( T ) ] .

Analysis of such LTI circuits gives a relationship between input x ( T ) and end product Ys ( T ) in the signifier of a differential equation:

whose system ( or reassign ) map is of the signifier:

This is a ratio of multinomials in s. The order of the system map is max ( N, M ) . Replacing s by jw gives the frequency-response H a ( jw ) , where tungsten denotes frequence in radians/second. For values of s with non-negative existent parts, H a ( s ) is the Laplace Transform of the parallel filter ‘s impulse response hour angle ( T ) . H ( s ) may be expressed in footings of its poles and nothings as:

There is a broad assortment of techniques for deducing H a ( s ) to hold a specified type of frequence response. For illustration, it may be shown that a general look for the system map of an n Thursday order linear Butterworth low-pass filter, with addition response:

III. First Order Filters

See the first order parallel low-pass filter below with input and end product electromotive forces x ( T ) and y ( T ) severally: –

Since the current in R is equal to the current in C it follows that:

Therefore the differential equation for this circuit is:

The system map is:

The addition response is:

where tungsten c = 1 / ( RC ) . This is the addition response of a first order Butterworth low-pass filter with cut-off frequence tungsten degree Celsius.

IV. Butterworth & A ; Chebyshev Filters

This is the most common method for transforming the system map Ha ( s ) of an parallel filter to the system map H ( omega ) of an IIR distinct clip filter. It is non the lone possible transmutation, but a really utile and dependable one.

V. Comparison Filters, Structures & A ; Graphs

VI. Program in Matlab

Chief Plan: Include 3 maps and 2 constructions for the filters ( see besides m.files in my cadmium )

map [ adenosine triphosphate, Ats ] = fading ( H, wp, tungsten )

% Actual fading for IIR low-pass filters.

% [ adenosine triphosphate, Ats ] = fading ( H, wp, tungsten ) returns the existent passband fading

% in dubnium ( adenosine triphosphate ) and existent stopband fading in dubnium ( Ats ) for IIR lowpass

% filter with frequence response H, passband cut-off frequence wp and

% stopband cut-off frequence tungsten.

ABSH = acrylonitrile-butadiene-styrene ( H ) ;

wpidx = floor ( ( length ( H ) – 1 ) * wp / pi + 1 ) ;

Pass_ABSH = ABSH ( 1: wpidx ) ;

adenosine triphosphate = 20 * log10 ( soap ( Pass_ABSH ) ) – 20 * log10 ( min ( Pass_ABSH ) ) ;

wsidx = ceil ( ( length ( H ) – 1 ) * tungsten / pi + 1 ) ;

Stop_ABSH = ABSH ( wsidx: length ( ABSH ) ) ;

Ats = -20 * log10 ( soap ( Stop_ABSH ) ) ;

=====================================================================================

map my_IIRl ( tungsten, wp, tungsten, displaced person, Ds )

% my_IIRl ( Myf_Plot_IIR_LP_Boundaries )

% my_IIRl ( tungsten, wp, tungsten, displaced person, Ds )

% Plot boundaries for IIR low-pass filter.

awpTop = tungsten ( 1: min ( happen ( tungsten & gt ; ws ) ) ) ;

secret plan ( awpTop, ( 1 ) *ones ( size ( awpTop ) ) , ‘r — ‘ ) ;

awpBottom = tungsten ( 1: min ( happen ( tungsten & gt ; wp ) ) ) ;

secret plan ( awpBottom, ( 1-2*dp ) *ones ( size ( awpBottom ) ) , ‘r — ‘ ) ;

aws = tungsten ( min ( happen ( tungsten & gt ; ws ) ) : length ( tungsten ) ) ;

secret plan ( aws, ds*ones ( size ( aws ) ) , ‘r — ‘ ) ;

secret plan ( [ wp wp ] , [ 0 1-2*dp ] , ‘r — ‘ ) ;

secret plan ( [ tungsten tungsten ] , [ ds 1 ] , ‘r — ‘ ) ;

=====================================================================================

map my_IIRlB ( tungsten, wp, tungsten, Atp_dB, Ats_dB, Log10AxisBottom )

% my_IIRlB ( Myf_Plot_IIR_LP_Boundaries_dB )

% my_IIRlB ( tungsten, wp, tungsten, displaced person, Ds )

% Plot log10 boundaries for IIR low-pass filter.

awpTop = tungsten ( 1: min ( happen ( tungsten & gt ; ws ) ) ) ;

secret plan ( awpTop, zeros ( size ( awpTop ) ) , ‘r — ‘ ) ;

awpBottom = tungsten ( 1: min ( happen ( tungsten & gt ; wp ) ) ) ;

secret plan ( awpBottom, ( -Atp_dB ) *ones ( size ( awpBottom ) ) , ‘r — ‘ ) ;

aws = tungsten ( min ( happen ( tungsten & gt ; ws ) ) : length ( tungsten ) ) ;

secret plan ( aws, -Ats_dB*ones ( size ( aws ) ) , ‘r — ‘ ) ;

secret plan ( [ wp wp ] , [ Log10AxisBottom -Atp_dB ] , ‘r — ‘ ) ;

secret plan ( [ tungsten tungsten ] , [ -Ats_dB 0 ] , ‘r — ‘ ) ;

=====================================================================================

% DSP class

% IIR Low filter utilizing Chebyshev I

% Bilinear transmutation

% F: Analog frequence in Hertz.

% W: Analog frequence in radians per second.

% tungsten: Digital frequence in radians per sample.

% degree Fahrenheit: Digital frequence in Hertz.

clear all ; shut all ; clc ;

% Specifications

% Sampling frequence ( Hz )

Fs = 10000 ;

% Pass-band cut-off frequence ( Hz )

Fpassband = 1000 ;

% Stop-band frequence ( Hz )

Fstopband = 1500 ;

% Pass-band fading ( dubnium )

Atp_dB = 1 ;

% Stop-band fading ( dubnium )

Ats_dB = 15 ;

do_plots = 1 ; % 0 or 1

% Find digital sphere specifications

Wp = 2 * pi * Fpassband ;

Ws = 2 * pi * Fstopband ;

Ts = 1 / Fs ; % Sampling period

wp = Ts * Wp ;

tungsten = Ts * Ws ;

% Atten. P. = 20 * log10 ( 1 + displaced person ) – 20 * log10 ( 1 – displaced person )

displaced person = ( 10^ ( Atp_dB/20 ) -1 ) / ( 10^ ( Atp_dB/20 ) +1 ) ;

Ds = 10^ ( -Ats_dB / 20 ) ; % Atten. S. = 20 * log10 ( Ds )

% Compute

% Find normalized passband and stopband frequences

wp_n = Fpassband/ ( Fs/2 ) ; ws_n = Fstopband/ ( Fs/2 ) ;

plot_analog_filter = 0 ; % Will be set to 1 when it is available

[ N, wc_n ] = cheb1ord ( wp_n, ws_n, Atp_dB, Ats_dB ) ;

[ b1, a1 ] = cheby1 ( n, Atp_dB, wc_n, ‘low ‘ ) ;

% Note for Butterworth low base on balls filter merely replace the old two bids with the followers:

% NOTE [ N, wc_n ] = buttord ( wp_n, ws_n, Atp_dB, Ats_dB ) ;

% NOTE [ b1, a1 ] = butter ( n, wc_n, ‘low ‘ ) ;

% NOTE for high base on balls filters merely replace the low with the high

Freqzfs = 256 ;

[ H1, tungsten ] = freqz ( b1, a1, Freqzfs ) ;

% Display the consequences

Str01 = sprintf ( ‘Filter type: % s ‘ ) ;

Str02 = sprintf ( ‘Order of filter: % vitamin D ‘ , n ) ;

[ Actual_Atp_dB, Actual_Ats_dB ] = fading ( H1, wp, tungsten ) ;

Str03 = sprintf ( ‘Actual passband fading: % degree Fahrenheit ‘ , Actual_Atp_dB ) ;

Str04 = sprintf ( ‘Actual stopband fading: % degree Fahrenheit ‘ , Actual_Ats_dB ) ;

sprintf ( ‘ % s % s % s % s ‘ , Str01, Str02, Str03, Str04 )

ProblemStr = sprintf ( ‘n= % vitamin D ‘ , n ) ;

if do_plots

figB = 200 ; figL = 100 ; figW= 430 ; figH = 340 ;

% Magnitude response secret plan

figure ( ‘position ‘ , [ figB figL figW figH ] )

clasp on

my_IIRl ( tungsten, wp, tungsten, displaced person, Ds ) ; % Plot boundaries

secret plan ( tungsten, acrylonitrile-butadiene-styrene ( H1 ) )

xlabel ( ‘Frequency omega ( rad/sec ) — -ightarrow ‘ ) ;

ylabel ( ‘Magnitude |H ( omega ) | — -ightarrow ‘ ) ;

rubric ( sprintf ( ‘Magnitude response, % s ‘ , ProblemStr ) ) ;

axis ( [ 0 pi 0 1+dp ] ) ;

% Phase response secret plan

figure ( ‘position ‘ , [ figB figL figW figH ] )

secret plan ( tungsten, unwrap ( angle ( H1 ) ) ) ;

xlabel ( ‘Frequency omega ( rad/sec ) — -ightarrow ‘ ) ;

ylabel ( ‘Phase arg H ( omega ) ( rad ) — -ightarrow ‘ ) ;

rubric ( sprintf ( ‘Phase response, % s ‘ , ProblemStr ) ) ;

% Log10 magnitude response secret plan

figure ( ‘position ‘ , [ figB figL figW figH ] )

clasp on

Log10AxisBottom = -Ats_dB – 10 ;

my_IIRlB ( tungsten, wp, tungsten, Atp_dB, Ats_dB, Log10AxisBottom ) ; % Plot boundaries

secret plan ( w,20*log10 ( abs ( H1 ) ) )

xlabel ( ‘Frequency omega ( rad/sec ) — -ightarrow ‘ ) ;

ylabel ( ‘Magnitude 20*log10|Hh ( omega ) | ( dubnium ) — -ightarrow ‘ ) ;

rubric ( sprintf ( ‘Log10 magnitude response, % s ‘ , ProblemStr ) ) ;

axis ( [ 0 pi Log10AxisBottom 1 ] ) ;

% Log10 magnitude response secret plan, whole

figure ( ‘position ‘ , [ figB figL figW figH ] )

clasp on

H1dB = 20*log10 ( acrylonitrile-butadiene-styrene ( H1 ) ) ;

secret plan ( tungsten, H1dB )

axis ( [ 0 pi min ( H1dB ) soap ( H1dB ) ] )

grid

xlabel ( ‘Frequency omega ( rad/sec ) — -ightarrow ‘ ) ;

ylabel ( ‘Magnitude 20*log10|Hh ( omega ) | ( dubnium ) — -ightarrow ‘ ) ;

rubric ( sprintf ( ‘Log10 magnitude response, % s ‘ , ProblemStr ) ) ;

if plot_analog_filter

% Plot magnitude response of parallel filter

% filter will non run into the boundaries.

figure ( ‘position ‘ , [ figB figL figW figH ] )

clasp on

Aw = linspace ( .001, Fs, Freqzfs ) *2*pi ; % .001 used alternatively of nothing

AH = freqs ( Ba, aa, Aw ) ;

my_IIRl ( Aw, Wp, Ws, displaced person, Ds ) ;

secret plan ( Aw, acrylonitrile-butadiene-styrene ( AH ) ) ;

axis ( [ min ( Aw ) soap ( Aw ) 0 1+dp ] ) ;

xlabel ( ‘Frequency omega ( rad/sec ) — -ightarrow ‘ ) ;

ylabel ( ‘Magnitude |H ( Omega ) | — -ightarrow ‘ ) ;

rubric ( sprintf ( ‘Prototype parallel filter, % s ‘ , ProblemStr ) ) ;

terminal

terminal

Share this Post!

Kylie Garcia

Hi there, would you like to get such a paper? How about receiving a customized one?

Check it out