主要内容

自适应线增强剂(ALE)

这个例子展示了如何应用自适应滤波器使用结构称为自适应信号分离线增强器(ALE)。在自适应线增强,测量信号x(n)包含两个信号,一个未知的信号v(n)和nearly-periodic噪声信号埃塔(n)。

我们的目标是消除被测信号中的噪声信号来获取感兴趣的信号。

加载感兴趣的信号

首先加载在感兴趣的一个信号,一个短片韩德尔的哈利路亚大合唱。

audioReader = dsp.AudioFileReader (“handel.ogg”,“SamplesPerFrame”,44100);timeScope = timeScope (“SampleRate”audioReader.SampleRate,“YLimits”[1],“时间间隔”,1“TimeSpanOverrunAction”,“滚动”);~结束(audioReader) x = audioReader () / 2;timeScope (x);结束

听声音片段

你可以听感兴趣的信号使用音频设备的作家。

释放(audioReader);audioWriter = audioDeviceWriter;~结束(audioReader) x = audioReader () / 2;audioWriter (x);结束

产生的噪声信号

现在,生成一个周期性噪声信号,正弦信号频率为1000赫兹。

正弦= dsp.SineWave (“振幅”,0.5,“频率”,1000,“SampleRate”audioReader.SampleRate,“SamplesPerFrame”,audioReader.SamplesPerFrame);

图10毫秒的正弦信号。正如所料,情节显示10期在10毫秒。

η= sin ();Fs = sine.SampleRate;阴谋(1 / Fs: 1 / Fs: 0.01,埃塔(1:地板(0.01 * Fs)));包含(的时间(秒));ylabel (“振幅”);标题(“噪声信号,埃塔(n)”);

图包含一个坐标轴对象。坐标轴对象标题噪声信号,η(n),包含时间(秒),ylabel振幅包含一个类型的对象。

听着噪音

周期性噪声是一个纯粹的基调。下面的代码起一秒(44100个样本的一帧)的噪声信号。

η= sin ();释放(audioWriter);audioWriter (eta);

被测信号

我们实际测量的信号,是这两个信号的总和,我们称之为信号年代(n)的一块年代(n)表明,音乐信号的包络线在很大程度上是被遮挡。听3剪辑的测量信号,噪声明显突出。

释放(audioReader);释放(timeScope);释放(audioWriter);数= 1;数< 4 s = (audioReader () / 2) + sin ();timeScope(年代);audioWriter(年代);数=计数+ 1;结束

自适应滤波器的配置

一种自适应线增强器(ALE)是基于线性预测的简单概念。nearly-periodic信号可以很好地预测使用过去的样本的线性组合,而非周期信号不能。所以,测量信号的延迟版本年代(一天)作为参考输入信号x自适应滤波器(n),和所需的响应信号d(n)是由等于年代(n)的参数选择在这样一个系统中信号延迟D和过滤器长度l用于自适应线性估计。延迟的时间取决于数量的相关感兴趣的信号。因为我们没有这个信号,我们将只挑选一个值D= 100和变化。这样的选择表明,样品的哈利路亚大合唱是不相关的,如果他们相距超过12毫秒。同时,我们会选择一个值l自适应滤波器= 32,虽然这也可以被改变。

D = 100;延迟= dsp.Delay (D);

最后,我们应当使用一些块自适应算法要求的向量的长度x(n)和d(n)块长度的整数倍。我们将选择一个块的长度N= 49的开始。

块LMS

第一个算法探索是块LMS算法。该算法类似于著名的least-mean-square (LMS)算法,除了它雇佣了填充系数更新而不是连续取样系数更新。块LMS算法需要一个过滤器长度,一块长度N和步长值μ。让我们先从一个值μ= 0.0001和完善它。

L = 32;N = 49;μ= 0.0001;blockLMSFilter =dsp.BlockLMSFilter (“长度”L,“StepSize”亩,“BlockSize”N);

运行过滤器

输出信号y(n)很大程度上应该包含周期性的正弦信号,而误差信号e(n)应该包含音乐的信息,如果我们所做的一切。因为我们有原创音乐信号v(n),我们可以画出e(n) vs。v(n)在同一图如上所示的残余信号e(n) -v(n)。它看起来像系统聚合后约5秒的适应步长。真正的证据,然而,通过倾听。

释放(audioReader);释放(timeScope);释放(audioWriter);~结束(audioReader) x = audioReader () / 2;s = x + sin ();d =延迟(s);[y, e] = blockLMSFilter (s、d);timeScope (e);audioWriter (e);结束

注意正弦噪声衰减缓慢。这种行为是由于适应滤波器系数对他们的最佳值。

FM噪声来源

现在,删除一个纯正弦信号从一个正弦信号加音乐信号不是特别具有挑战性,如果冒犯正弦信号的频率。一个简单的两极,两个零陷波滤波器可以执行这个任务。让我们使这个问题有点难通过添加一个FM-modulated正弦信号作为我们的噪声源。

η= 0.5 * sin(2 *π* 1000 / Fs * (0:396899) + 10 * sin(2 *π/ Fs * (0:396899) '));signalSource = dsp.SignalSource(η,“SamplesPerFrame”audioReader.SamplesPerFrame,“SignalEndAction”,循环重复的);释放(audioReader);释放(timeScope);释放(audioWriter);~结束(audioReader) x = audioReader () / 2;s = x + signalSource ();timeScope(年代);audioWriter(年代);结束

“鸟鸣”信号清晰可闻。一个固定系数陷波滤波器不会删除FM-modulated正弦信号。看看块LMS-based啤酒。我们将增加步长值μ= 0.005帮助啤酒跟踪噪声信号的变化。

μ= 0.005;释放(blockLMSFilter);blockLMSFilter。StepSize =μ;

运行自适应滤波器

我们现在过滤器吵闹的音乐信号自适应滤波器和无声的音乐信号的误差进行比较。

释放(audioReader);释放(timeScope);释放(audioWriter);~结束(audioReader) x = audioReader () / 2;s = x + signalSource ();d =延迟(s);[y, e] = blockLMSFilter (s、d);timeScope ([x, e]);audioWriter (e);结束

释放(audioReader);释放(timeScope);

释放(audioWriter);