LMS自適應維納濾波器

1、研究背景算法

維納濾波器參數是固定的,適合於平穩隨機信號。卡爾曼濾波器參數是時變的,適合於非平穩隨機信號。然而,只有在信號和噪聲的統計特性先驗已知的狀況下,這兩種濾波術才能得到最優濾波。在實際應用中,經常沒法獲得信號和噪聲統計特性的先驗知識。在這種狀況下,自適應濾波技術可以得到極佳的濾波性能,於是具備很好的應用價值。經常使用的自適應濾波技術有:最小均方(LMS)自適應濾波器、遞推最小二乘(RLS)濾波器、格型濾波器和無限衝激響應(IIR)濾波器等。這些自適應濾波技術的應用又包括:自適應噪聲抵消、自適應譜線加強和陷波等。ide

 2、LMS自適應維納濾波器理論知識函數

 

 

 

3、利用上述結論的Matlab仿真性能

首先用Matlab自帶函數讀取一段音頻並保存,隨即對其加上高斯白噪聲干擾,對處理後的信號LMS算法濾波。併產生相應的音頻文件並保存,咱們能夠從試聽音頻和觀察圖像兩種方式查看LMS濾波的效果。spa

M腳本代碼3d

 1 %-- 14-10-25 下午3:36 --%
 2 %功能:LMS自適應噪聲抵消
 3 % Inputs:
 4 % Outputs:
 5 clc;
 6 clear;
 7 [ref,fs] =wavread('in.wav');
 8 apm = 1;   %噪聲幅度
 9 firLen = 160;  %定義濾波器長度
10 mu = 0.002;      %迭代步長
11 a = zeros(1,firLen);   %產生一行160列向量
12 dataLen = length(ref);   %賦值ref信號向量
13 eout = zeros(1,dataLen);   %產生一列dataLen長的向量且賦值
14 e=zeros(1,dataLen);
15 firIn = zeros(1,firLen);
16 firOut=zeros(1,dataLen);
17 noise = apm*rand(1,dataLen);  %產生隨機噪聲
18 near = ref'+noise;   %在原始音頻基礎上加入噪聲
19 for i=firLen:dataLen
20 firOut(i) = a*(near(i-firLen+1:i))';  %fir濾波,實現橫向濾波器操做
21 e(i) = ref(i)-firOut(i);  %求偏差信號
22 a = a+2*mu*e(i)*(near(i-firLen+1:i));   %lms 係數更新
23 eout(i) = e(i)*e(i);
24 end
25 wavwrite(firOut,fs,'firOut.wav');
26 wavwrite(eout,fs,'eout.wav');
27 wavwrite(near,fs,'speech_noise.wav');
28 wavplay(firOut,fs);
29 figure(1)
30 subplot(411);
31 plot(ref);
32 title('原始信號');
33 subplot(412);
34 plot(near);
35 title('語音加噪信號');
36 subplot(413);
37 plot(noise);
38 title('噪聲信號');
39 subplot(414);
40 plot(firOut);
41 title('自適應消噪信號');
wave.m

運行效果圖code

4、源文件下載blog

LMS filter1.0.rar
115網盤禮包碼:5lbagoebt972
http://115.com/lb/5lbagoebt972get

相關文章
相關標籤/搜索