Designing butterworth filter of Nth order

Click For Summary
SUMMARY

This discussion focuses on designing a digital Butterworth lowpass filter of Nth order using MATLAB. The user has successfully implemented a 1st order lowpass filter and seeks to extend their library to include Butterworth filters, specifically addressing the damping ratio and state space conversion. Key MATLAB functions mentioned include zp2ss for zero-pole-gain to state space conversion and lp2lp for transforming the state space matrices based on the cutoff frequency. The user is encountering issues with applying the cutoff frequency correctly in their implementation.

PREREQUISITES
  • Understanding of digital filter design concepts, specifically Butterworth filters.
  • Familiarity with MATLAB programming, particularly signal processing functions.
  • Knowledge of state space representation in control systems.
  • Basic concepts of damping ratio and its impact on filter performance.
NEXT STEPS
  • Research the implementation of butter function in MATLAB for Butterworth filter design.
  • Learn about the implications of damping ratio in filter design and its mathematical representation.
  • Explore the lp2lp function documentation to understand its parameters and usage in detail.
  • Investigate the effects of different cutoff frequency formats (normalized, rad/s, Hz) on filter performance.
USEFUL FOR

Signal processing engineers, MATLAB users designing digital filters, and anyone interested in advanced filter design techniques.

Xatax
Messages
1
Reaction score
0
I want to design a digital butterworth lowpass filter of nth order, with only freedom of choice to user being order of the filter and the cut off frequency, i already have a 1st order low pass.

Code:​
Code:
T = 1/(2*pi*this.fc);
            this.A = -1/T;
            this.B = 1/T;
            this.C = 1;
            this.D = 0;



This is a very basic lowpass PT1 filter, i take the state space matrix, descrtize it and apply it to my signal. now i want to extend my library to butterworth. I am trying to use as many minimal MATLAB commands as possible. So i thought it's better to derive in hand before implementing it. i wanted to know how to deal with damping ratio as the order is progressed.

When i was searching for answer, i came across wiki of butter worth filter:
Untitled.png


I can just hard code this, but have they considered damping ratio and how do i covert this to state space.Or, i found another way, where i find zeros and poles based on the order of the filter.
Code:
% Poles are on the unit circle in the left-half plane.
n = varargin{1} % order of the filter
fc = varargin{2} % cut off frequency
Wn = (fc*2)/Fs % Fs is sampling frequency, normalizing the cut off frequency
z = [];
p = exp(1i*(pi*(1:2:n-1)/(2*n) + pi/2)); %n is the order of the filter
p = [p; conj(p)];
k = real(prod(-p)); %product of an array element´

%When we get zpk, we just convert them to state space.

[a,b,c,d] = zp2ss(z,p,k);

%Now transforming the abcd matrix to the given cut off frequency
[a,b,c,d] = lp2lp(a,b,c,d,Wn);

The only problem is while applying the cut off frequency, '[a,b,c,d] = lp2lp(a,b,c,d,Wn);' should apply normalized one or in rads/sec or just in Hz. Even though i tried all of them still would like i to ask where i am going wrong
 

Similar threads

Replies
8
Views
2K
  • · Replies 20 ·
Replies
20
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
Replies
14
Views
3K
Replies
6
Views
2K
  • · Replies 1 ·
Replies
1
Views
8K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 15 ·
Replies
15
Views
10K
  • · Replies 29 ·
Replies
29
Views
5K