关于在Matlab中使用'butter'函数的低通滤波器的问题

时间:2014-12-29 16:25:51

标签: matlab filter lowpass-filter

我正在尝试在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给了我一个极点:

s = 0.8541

我的问题是:

  1. 这个号码来自哪里?如果极点不是w = 2 * pi * fc = 628 rad / s(如果除以wc则标准化为1)?
  2. 由于butterworth LP滤波器极位于左半平面,所以不应该是负的吗?
  3. 为什么Matlab在-1时给我一个零?
  4. 非常感谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,butter会生成离散时间过滤器设计。因此,传递函数是根据 z (z变换)定义的,而不是 s (拉普拉斯变换)。

n 阶的离散时间Butterworth滤波器在 z = - 1且 n <时 n - 阶零/ em>单位圆内的极点。这与您的结果一致。 (相比之下,连续时间巴特沃斯滤波器在无穷远处具有 n - 阶零,在左手单位半圆中具有 n 极点。)