设计一个三阶巴特沃斯滤波器_巴特沃斯滤波器频率设计及增益多项式方程

在之前的滤波器教程中,我们研究了简单的一阶型低通和高通滤波器,它们的RC滤波器电路设计中只包含一个电阻器和一个无功元件(电容器)。

在使用滤波器对信号的频谱进行整形的应用中,例如在通信或控制系统中,滚降的形状或宽度也称为“过渡带”,对于简单的一阶滤波器,可能是太长或太宽,因此需要设计有多个“订单”的有源滤波器。这些类型的过滤器通常称为“高阶”或“n th -order”过滤器。

复杂性或过滤器类型由过滤器“order”定义,这取决于其设计中的电容器或电感器等无功元件的数量。我们还知道,滚降率和过渡带的宽度取决于滤波器的阶数和简单的一阶滤波器,它具有20dB / decade或6dB的标准滚降率。 /octave.

然后,对于具有n th 数字顺序的滤波器,它将具有20n dB / decade或6n dB / octave的后续滚降率。因此,一阶滤波器的滚降率为20dB / decade(6dB /倍频程),二阶滤波器的滚降率为40dB / decade(12dB /倍频程),四阶滤波器具有滚降率为80dB / decade(24dB / octave)等等。

高阶滤波器,例如三阶,四阶和五阶通常是通过单个级联在一起形成的 -

例如,两个二阶低通滤波器可以级联在一起,产生一个四阶低通滤波器,依此类推。尽管可以形成的滤波器的顺序没有限制,但随着顺序的增加,其尺寸和成本也会增加,其精度也会下降。

十年和八度

一个关于十年和 Octaves 的最终评论。在频率范围内,十年是十倍增加(乘以10)或十倍减少(除以10)。例如,2到20Hz代表十年,而50到5000Hz代表二十年(50到500Hz,然后是500到5

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个 C 语言实现的低通三阶巴特沃斯滤波器的代码: ``` #include <stdio.h> #include <math.h> #define PI 3.14159265358979323846 void butterworth_lowpass_filter(double *input, double *output, int length, double cutoff_frequency, int order) { double w0 = 2.0 * PI * cutoff_frequency; double wc = w0 / tan(w0 / 2.0); double a[order+1], b[order+1]; double alpha = sin(w0) / (2.0 * pow(2.0, 1.0/2.0) * pow(cos(w0/2.0), 1.0/order)); double beta = pow(1.0 + pow(alpha, 2.0), 1.0/2.0); double a0 = 1.0 + alpha; a[0] = 1.0; a[1] = -2.0 * cos(w0) / a0; a[2] = (1.0 - alpha) / a0; b[0] = pow(beta - alpha, order); b[1] = 2.0 * (pow(alpha, order) - pow(beta, order)) * cos(w0) / a0; b[2] = (pow(beta + alpha, order) - 2.0 * pow(alpha, order)) / a0; double x[order+1] = {0}; double y[order+1] = {0}; for (int i = 0; i < length; i++) { x[0] = input[i]; y[0] = b[0] * x[0]; for (int j = 1; j <= order; j++) { y[0] += b[j] * x[j] - a[j] * y[j]; x[j] = x[j-1]; y[j] = y[j-1]; } output[i] = y[0]; } } int main() { double input[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; double output[10] = {0}; double cutoff_frequency = 2.0; int order = 3; butterworth_lowpass_filter(input, output, 10, cutoff_frequency, order); for (int i = 0; i < 10; i++) { printf("%f ", output[i]); } printf("\n"); return 0; } ``` 这个代码实现了一个三阶巴特沃斯低通滤波器,可以通过修改 `cutoff_frequency` 和 `order` 来调整滤波器的截止频率和阶数。在 `main` 函数中,我们定义了一个长度为 10 的输入信号 `input`,并将其输入到滤波器中,得到了输出信号 `output`。最后,我们将输出信号打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值