实时 - 主动噪声控制

信息处理 傅里叶变换 卷积 控制系统 自适应滤波器
2022-02-16 23:27:56

我正在尝试使用 Labview 在 FPGA 上实现用于系统识别和有源噪声控制的自适应滤波器,用于实时信号处理。对于系统识别,我实现了以下自适应滤波器:

g(n+1)=g(n)+μd(n)e(n)

e(n)=np(n)g(n)d(n)

表示元素乘法,g(n)CN作为频率响应函数(脉冲响应的傅里叶变换),样本数N=2048,μ作为步长参数,()表示复共轭,d(n)CN是扬声器驱动数据(白噪声)的傅里叶变换和np(n)CN是麦克风处测量信号的傅里叶变换。确定的脉冲响应和频率响应函数是合理的并且符合我的期望,这使我认为它是正确的。

我现在正在尝试使用相同的方程式进行反馈 - 使用已识别的频率响应函数进行主动噪声控制。为此,我用正弦波驱动另一个扬声器,并通过以下方式计算频域中的消除扬声器驱动函数:

d(n+1)=d(n)μge(n)

e(n)是在误差传感器处测量的压力的傅里叶变换。我用F1(d(n+1))计算样本来驱动我的扬声器。

问题:即使步长很小,自适应滤波器也会立即发散,我认为扬声器即将爆炸。在查看了我的代码几个小时后,我找不到错误。现在我想知道:ANC 方程应该起作用还是仅在特殊情况下起作用,例如周期性信号?

0个回答
没有发现任何回复~