Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

08-09-2016 04:00 AM

Options

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report to a Moderator

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:

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