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

Unit testing 我应该如何对数字滤波器进行单元测试?,unit-testing,signal-processing,digital-filter,Unit Testing,Signal Processing,Digital Filter,首先是问题: 如何在软件中编写数字滤波器带通/带阻的单元测试?我应该测试什么?是否有任何用于筛选的规范测试套件 如何选择测试输入,生成预期输出,并以我可以说实际输出符合预期输出的方式定义一致性 现在请看上下文: 我正在开发的肌电信号采集和分析应用程序需要使用数字滤波,主要是visualstudio中的带通和带阻滤波C/.Net 我们的应用程序的前一个版本使用一些我们可以使用的遗留代码实现了这些过滤器,但是我们不确定它在数学上是否正确,因为我们没有针对它们的单元测试 除此之外,我们也在评估,但他们

首先是问题:

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

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

现在请看上下文:

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

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

除此之外,我们也在评估,但他们的单元测试套件还不包括OnlineFilter的子类

我们不确定如何评估一个过滤库而不是另一个,我们得到的最接近的方法是过滤一些正弦波以观察它们之间的差异。对于单元测试来说,这也不是一个好方法,我们希望将其自动化,而不是在别处运行脚本和评估结果,甚至是可视化的

我想一个好的测试套件应该测试这样的东西

线性和时间不变性:我应该如何编写一个带有布尔、通过或失败断言的自动测试? 脉冲响应:向滤波器输入脉冲响应,获取其输出,并检查其是否符合预期,在这种情况下: 我如何定义预期的响应? 我如何定义一致性? 正弦输入的幅度响应; 阶跃/恒定偏移输入的振幅响应; 频率响应,包括半功率、截止、斜率等。 我不能被认为是编程或DSP方面的专家!这正是为什么我对那些似乎工作良好的过滤器持谨慎态度。我们经常会有客户质疑我们的过滤算法,因为他们需要发布我们系统捕获数据的研究报告,我希望有正式证据证明过滤器按预期工作


免责声明:

在创建测试之前,您需要了解特定应用程序中对可用或可接受过滤器的要求。此外,正式证明的过程可能与单元测试非常不同,这取决于允许的输入和状态的总范围。在创建测试之前,您需要了解特定应用程序中对工作或可接受过滤器的要求。此外,正式证明的过程可能与单元测试非常不同,这取决于允许的输入和状态的总范围。