【发布时间】:2015-10-26 16:27:14
【问题描述】:
我正在使用 DSP 滤波器库 http://www.linux-usb-daq.co.uk/howto2/filter/
使用模板非类型参数来初始化过滤器对象。这就是过滤器对象的创建和使用方式。
const int order = 3;
Iir::Butterworth::LowPass<order> f;
const float samplingrate = 1000; // Hz
const float cutoff_frequency = 50; // Hz
f.setup (order, samplingrate, cutoff_frequency);
f.reset ();
FILE *fimpulse = fopen("lp.dat","wt");
// let's generate an input signal and filter it
// instantly!
for(int i=0;i<1000;i++)
{
float a=0;
if (i==10) a = 1; // delta pulse at t=10
float b = f.filter(a);
fprintf(fimpulse,"%f\n",b);
}
现在,如果我想在我的代码中使用这个库来进行 IIR 过滤,以实现不同阶的过滤器,如 3、4、5 等。我应该如何继续,而不必重写整个代码?
因为顺序是编译时常量
const int order = 3;
Iir::Butterworth::LowPass<order> f;
是否有任何技巧可以让我为不同的订单编写此代码而无需重写所有内容?
谢谢,
【问题讨论】:
-
只需更改订单值
标签: c++ templates filtering signal-processing