Graham
Graham

Reputation: 581

Questions about lowpass filters using 'butter' function in Matlab

I am trying to design a lowpass filter in Matlab:

fc = 100;           % Cutoff frequency
fs = 4020;          % Sampling frequency
w_norm = 2*fc/fs;
filter_order = 1;
[num,denom] = butter(filter_order,w_norm)
sys = tf(num, denom)
[z,p,k] = zpkdata(sys)

Matlab gives me a pole at:

s = 0.8541

My questions are:

  1. Where does this number come from? Shouldn't the pole be at w = 2*pi*fc = 628 rad/s (normalised to 1 if divided by wc)?
  2. Shouldn't it be negative since butterworth LP filter poles are in the left half plane?
  3. Why does Matlab also give me a zero at -1?

Many thanks.

Upvotes: 2

Views: 1021

Answers (1)

Luis Mendo
Luis Mendo

Reputation: 112699

By default, butter produces a discrete-time filter design. Therefore the transfer function is defined in terms of z (z-transform), not s (Laplace transform).

A discrete-time Butterworth filter of order n has an n-order zero at z=-1 and n poles within the unit circle. This is in accordance with your results. (In contrast, a continuous-time Butterworth filter would have an n-order zero at infinity and n poles in the left-hand unit semicircle).

Upvotes: 1

Related Questions