我应该如何对数字滤波器进行单元测试?

时间:2015-07-21 21:29:32

标签: unit-testing signal-processing digital-filter

首先是问题:

  

如何在软件中编写数字滤波器(带通/带阻)的单元测试?我应该测试什么?是否有任何规范测试套件用于过滤?

     

如何选择测试输入,生成预期输出,以及定义"一致性"以某种方式,我可以说实际输出符合到预期的输出?

现在上下文:

我正在开发的应用程序(肌电信号采集和分析)需要使用数字滤波,主要是带通和带阻滤波(Visual Studio中的C#/ .Net)。

我们的应用程序的早期版本使用我们可以使用的一些遗留代码实现了这些过滤器,但我们不确定它在数学上是否正确,因为我们没有为它们进行单元测试。

除此之外,我们还在评估Mathnet.Filtering,但他们的单元测试套件还没有包含OnlineFilter的子类。

我们不确定如何评估一个过滤库而不是另一个,我们得到的最接近的是过滤一些正弦波以观察它们之间的差异。这也不是关于单元测试的好方法,这是我们想要自动化的东西(而不是在其他地方运行脚本和评估结果,甚至是在视觉上)。

我想一个好的测试套件应该测试类似的东西?

  • 线性和时间不变性:我应该如何编写自动化测试(使用布尔值,"传递或失败"断言)?
  • 脉冲响应:向滤波器提供脉冲响应,获取其输出,并检查它是否符合预期的",在这种情况下:
    • 我如何定义预期的响应?
    • 我如何定义一致性
  • 正弦输入的幅度响应;
  • 步进/恒定偏移输入的幅度响应;
  • 频率响应(包括半功率,截止,斜率等)

我不能被认为是编程或DSP的专家(远非它!)而且这正是我为什么对过滤器的谨慎态度?#34;似乎"工作得很好我们常常让客户质疑我们的过滤算法(因为他们需要发布使用我们的系统捕获数据的研究),并且我希望形式证明过滤器正在起作用预期

免责声明:this question was also posted on DSP.StackExchange.com

0 个答案:

没有答案