Butterworth filter
时间: 2024-06-14 16:06:21 浏览: 238
Butterworth滤波器是一种常见的模拟滤波器,用于信号处理和电子工程中。它是一种无失真滤波器,具有平坦的幅频响应。Butterworth滤波器可以实现低通、高通、带通和带阻滤波功能。
Butterworth滤波器的特点是在通带内具有最平坦的幅频响应,但在截止频率附近的过渡区域较为缓慢。这意味着Butterworth滤波器可以保留信号的大部分能量,并且不会引入额外的相位失真。
以下是一个C++实现的Butterworth滤波器的示例代码:
```cpp
#include <iostream>
#include <cmath>
// Butterworth低通滤波器
double butterworthLowPassFilter(double input, double cutoffFrequency, double samplingFrequency, int order) {
double RC = 1.0 / (cutoffFrequency * 2 * M_PI);
double dt = 1.0 / samplingFrequency;
double alpha = dt / (RC + dt);
static double output = 0.0;
output = alpha * input + (1 - alpha) * output;
for (int i = 1; i < order; i++) {
output = alpha * output + (1 - alpha) * output;
}
return output;
}
int main() {
double inputSignal = 0.5; // 输入信号
double cutoffFrequency = 10.0; // 截止频率
double samplingFrequency = 100.0; // 采样频率
int order = 4; // 阶数
double filteredSignal = butterworthLowPassFilter(inputSignal, cutoffFrequency, samplingFrequency, order);
std::cout << "Filtered signal: " << filteredSignal << std::endl;
return 0;
}
```
这段代码演示了如何使用Butterworth滤波器对输入信号进行低通滤波。你可以根据需要修改输入信号、截止频率、采样频率和阶数来进行实验。
阅读全文