我正在尝试使用 Labview 在 FPGA 上实现用于系统识别和有源噪声控制的自适应滤波器,用于实时信号处理。对于系统识别,我实现了以下自适应滤波器:
和
和表示元素乘法,作为频率响应函数(脉冲响应的傅里叶变换),样本数,作为步长参数,表示复共轭,是扬声器驱动数据(白噪声)的傅里叶变换和是麦克风处测量信号的傅里叶变换。确定的脉冲响应和频率响应函数是合理的并且符合我的期望,这使我认为它是正确的。
我现在正在尝试使用相同的方程式进行反馈 - 使用已识别的频率响应函数进行主动噪声控制。为此,我用正弦波驱动另一个扬声器,并通过以下方式计算频域中的消除扬声器驱动函数:
和是在误差传感器处测量的压力的傅里叶变换。我用计算样本来驱动我的扬声器。
问题:即使步长很小,自适应滤波器也会立即发散,我认为扬声器即将爆炸。在查看了我的代码几个小时后,我找不到错误。现在我想知道:ANC 方程应该起作用还是仅在特殊情况下起作用,例如周期性信号?