LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Desgining Digital butterworth filter of Nth order

even though this is not LabView, I am trying my luck here. this is actually related to DSP in matlab.

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:​

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:

Butter coefficient

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.

% 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 i would like  to ask where i am going wrong

0 Kudos
Message 1 of 1
(1,141 Views)