问题背景
在设计一款虚拟滤波器时,发生以下报错。滤波器项目结构为两个信号发生器VI,一个生成信号,一个生成噪声,通过全局变量将噪声与信号输入滤波器VI,在滤波器VI中使用FIR和IIR进行滤波。
报错详情
从报错提示上可以看到是输入频率不符合采样定律(2倍频率)与滤波器逻辑设计(带通、带阻低频率小于高频率),导致滤波器无法正常工作。
原因分析
-
首先想到的是滤波器前面板参数设置错误,尝试后无果。
-
正确原因:全局变量传递的是一个float型数据,因此将全局变量直接输入滤波器,也就是直接将一个浮点数输入滤波器,被滤波器看做一个波,因此无法进行滤波。
解决方法
将单个输入的一个个离散的数字信号Y值,使用build waveform函数建立一个模拟信号,再将模拟信号输入数字滤波器进行采样与滤波,最终输出结果。
解决用到的函数
https://zone.ni.com/reference/en-XX/help/371361R-01/lvwave/build_waveform/
解决代码截图
tips: delta t 表示读取Y值时的时间间隔,此处不能设置过大(尽量小),过大会导致生成的模拟波形拟合度差,也会出现同样的报错。
参考网址
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019KazSAE&l=zh-CN