主要内容

基于RLS自适应滤波的自适应噪声消除

这个例子展示了如何使用RLS滤波器从噪声信号中提取有用的信息。信息承载信号是一种被加性高斯白噪声干扰的正弦波。

自适应噪声消除系统假定使用两个麦克风。主传声器接收噪声输入信号,而副传声器接收与信息承载信号无关但与主传声器接收到的噪声相关的噪声。

注意:此示例等价于提供的Simulink®模型'rlsdemo'。金宝app

参考文献:S.Haykin,“自适应滤波理论”,第3版,Prentice Hall, n.j., 1996。

该模型说明了自适应RLS滤波器从噪声信号中提取有用信息的能力。

priv_drawrlsdemo轴

信息承载信号为0.055 cycles/sample的正弦波。

信号=罪(2 *π* 0.055 * (0:1000-1)');signalSource = dsp。SignalSource(信号,“SamplesPerFrame”, 100,...“SignalEndAction”循环重复的);情节(0:199、信号(1:200));网格;轴([0 200 -2 2]);标题('信息方位信号');

次级传声器拾取的噪声是RLS自适应滤波器的输入。干扰正弦波的噪声是这个噪声的低通滤波版本(相关)。滤波后的噪声和信息承载信号的和就是自适应滤波器的理想信号。

据nvar = 1.0;%噪声方差噪音= randn(1000 1) *据nvar;%白噪声noiseSource = dsp。SignalSource(噪音,“SamplesPerFrame”, 100,...“SignalEndAction”循环重复的);情节(0:999、噪音);标题(“次级麦克风接收到的噪音”);网格;轴([0 1000 -4 4]);

干扰信息承载信号的噪声是“噪声”的过滤版本。初始化对噪声进行操作的过滤器。

lp = dsp。FIRFilter (“分子”0.5), fir1(31日);%低通FIR滤波器

设置和初始化RLS自适应滤波器参数和值:

M = 32;%过滤器订单δ= 0.1;%初始投入协方差估计P0 =(1 /δ)*眼(M M);% P矩阵初始设置rlsfilt = dsp。RLSFilter (M,“InitialInverseCovariance”、P0);

运行RLS自适应滤波器1000次迭代。当自适应滤波器收敛时,滤波后的噪声应该完全从“信号+噪声”中减去。另外,误差e应该只包含原始信号。

范围= timescope (“TimeSpanSource”“属性”“时间间隔”, 1000,...“YLimits”, (2, 2));n = noiseSource();%的噪音s = signalSource ();D = lp(n) + s;[y, e] = rlsfilt (n、d);范围((s、e));结束释放(范围);

图中显示了自适应滤波器响应对FIR滤波器响应的收敛性。

H = abs (freqz (rlsfilt.Coefficients, 64));H1 = abs (freqz (lp.Numerator, 64));wf = linspace (0, 1, 64);情节(wf H、wf、H1);包含('归一化频率(\乘以\ rad/sample)');ylabel (“级”);传奇(自适应滤波器响应的“响应滤波器需要”);网格;轴([0 1 0 2]);