A. 急求:自適應濾波器LMS演算法代碼
自適應過程一般採用典型LMS自適應演算法,但當濾波器的輸入信號為有色隨機過程時,特別是當輸入信號為高度相關時,這種演算法收斂速度要下降許多,這主要是因為輸入信號的自相關矩陣特徵值的分散程度加劇將導致演算法收斂性能的惡化和穩態誤差的增大。此時若採用變換域演算法可以增加演算法收斂速度。變換域演算法的基本思想是:先對輸入信號進行一次正交變換以去除或衰減其相關性,然後將變換後的信號加到自適應濾波器以實現濾波處理,從而改善相關矩陣的條件數。因為離散傅立葉變換�DFT本身具有近似正交性,加之有FFT快速演算法,故頻域分塊LMS�FBLMS演算法被廣泛應用。
FBLMS演算法本質上是以頻域來實現時域分塊LMS演算法的,即將時域數據分組構成N個點的數據塊,且在每塊上濾波權系數保持不變。其原理框圖如圖2所示。FBLMS演算法在頻域內可以用數字信號處理中的重疊保留法來實現,其計算量比時域法大為減少,也可以用重疊相加法來計算,但這種演算法比重疊保留法需要較大的計算量。塊數據的任何重疊比例都是可行的,但以50%的重疊計算效率為最高。對FBLMS演算法和典型LMS演算法的運算量做了比較,並從理論上討論了兩個演算法中乘法部分的運算量。本文從實際工程出發,詳細分析了兩個演算法中乘法和加法的總運算量,其結果為:
復雜度之比=FBLMS實數乘加次數/LMS實數乘加次數=(25Nlog2N+2N-4)/[2N(2N-1)]�
採用ADSP的C語言來實現FBLMS演算法的程序如下:
for(i=0;i<=30;i++)
{for(j=0;j<=n-1;j++)
{in[j]=input[i×N+j;]
rfft(in,tin,nf,wfft,wst,n);
rfft(w,tw,wf,wfft,wst,n);
cvecvmlt(inf,wf,inw,n);
ifft(inw,t,O,wfft,wst,n);
for(j=0,j<=N-1;j++)
{y[i×N+j]=O[N+j].re;
e[i×N+j]=refere[i×N+j]-y[i×N+j];
temp[N+j]=e[i×N+j;}
rfft(temp,t,E,wfft,wst,n);
for(j=0;j<=n-1;j++)
{inf_conj[j]=conjf(inf[j]);}��
cvecvmlt(E,inf_conj,Ein,n);
ifft(Ein,t,Ein,wfft,wst,n);
for(j=0;j<=N-1;j++)
{OO[j]=Ein[j].re;
w[j]=w[j]+2*u*OO[j];}��
}
在EZ-KIT測試板中,筆者用匯編語言和C語言程序分別測試了典型LMS演算法的運行速度,並與FBLMS演算法的C語言運行速度進行了比較,表2所列是其比較結果,從表2可以看出濾波器階數為64時,即使是用C語言編寫的FBLMS演算法也比用匯編編寫的LMS演算法速度快20%以上,如果濾波器的階數更大,則速度會提高更多。
B. 自適應濾波器LMS演算法對聲信號雜訊的濾除用MATLAB編程怎麼做啊
>> clear all;
g=100;
N=256;
k=16;
pp=zeros(g,N-k);
u=0.01;
for q=1:g,
t=1:N;
a=1;
s=a*sin(0.05*pi*t);
figure(1);
subplot(3,1,1)
plot(t,real(s));
title('信號s時域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,5);
y=zeros(1,N);
y(1:k)=xn(1:k);
w=zeros(1,k);
e=zeros(1,N);
for i=(k+1):N,
XN=xn((i-k+1):i);
y(i)=w*XN';
e(i)=s(i)-y(i);
w=w+u*e(i)*XN;
end
pp(q,:)=(e((k+1):N)).^2;
end
subplot(3,1,2)
plot(t,real(xn));
title('信號s加雜訊後的時域波形');
subplot(3,1,3)
plot(t,real(y));
title('自適應濾波後的輸出時時域波形');
for c=1:N-k;
bi(c)=sum(pp(:,c))/g;
end;
figure(2);
T=1:N-k;
plot(T,bi,'b');
hold on
C. 變步長LMS自適應濾波演算法的MATLAB程序
clear all
close all
N=10; %濾波器階數
sample_N=500; %采樣點數
A=1; %信號幅度
snr=10; %信噪比
t=1:sample_N;
length_t=100; %期望信號序列長度
d=A*sin(2*pi*t/length_t); %期望信號
M=length(d); %M為接收數據長度
x=awgn(d,snr); %經過信道(加雜訊)
delta=1/(10*N*(A^2)); %計算能夠使LMS演算法收斂的delta
y=zeros(1,M);
h=zeros(1,N); %LMS濾波器系數
h_normalized=zeros(1,N); %歸一化LMS濾波器系數
y1=zeros(1,N);
for n=N:M %系數調整LMS演算法
x1=x(n:-1:n-N+1);
%LMS演算法
y(n)=h*x1';
e(n)=d(n)-y(n);
h=h+delta*e(n)*x1;
%NLMS演算法
y_normalized(n)=h_normalized*x1';
e_normalized(n)=d(n)-y_normalized(n);
h_normalized=h_normalized+e_normalized(n)*x1/(x1*x1');
end
error=e.^2; %LMS演算法每一步迭代的均方誤差
error_normalized=e_normalized.^2; %NLMS演算法每一步迭代的均方誤差
for n=N:M %利用求解得到的h,與輸入信號x做卷積,得到濾波後結果
x2=x(n:-1:n-N+1);
y1(n)=h*x2';
y2(n)=h_normalized*x2';
end
subplot(411)
plot(t,d);
axis([1,sample_N,-2,2]);
subplot(412)
plot(t,x);
subplot(413)
plot(t,y);
subplot(414)
plot(t,y_normalized);
figure(2)
plot(t,error,'r',t,error_normalized,'b');
D. 自適應濾波器的原理
設計最佳濾波器,要求已知關於信號和雜訊統計特性的先驗知識。但在許多情況下人們對此並不知道或知道甚少,某些情況下這些統計特性還是時變的。處理上述這類信號需要採用自適應濾波器。如地球物理信息處理中,地球物理場的趨勢分析,即場的滑動窗口處理方法就是典型的自適應濾波器的應用。
自適應信號處理器分為兩大類,一類是自適應天線,另一類則是自適應濾波器。微電子技術和超大規模集成(VLS1)電路技術的進步,促進了自適應信號處理技術的發展,使之獲得廣泛的應用。本節簡單介紹一下自適應濾波器的工作原理。
自適應濾波原理:自適應濾波器由參數可調的數字濾波器(或稱為自適應處理器)和自適應演算法兩部分組成,如圖3-12所示。參數可調數字濾波器可以是FIR數字濾波器或IIR數字濾波器,也可以是格型數字濾波器。輸入信號x(n)通過參數可調數字濾波器後產生輸出信號(或響應)y(n),將其與參考信號(或稱期望響應)d(n)進行比較,形成誤差信號e(n)。e(n)(有時還要利用x(n))通過某種自適應演算法對濾波器參數進行調整,最終使e(n)的均方值最小。因此,實際上自適應濾波器是一種能夠自動調整本身參數的特殊維納濾波器,在設計時不需要事先知道關於輸入信號和雜訊的統計特性的知識,它能夠在自己的工作過程中逐漸「了解」或估計出所需的統計特性,並以此為依據自動調整自己的參數,以達到最佳濾波效果。一旦輸入信號的統計特性發生變化,它又能夠跟蹤這種變化,自動調整參數,使濾波器性能重新達到最佳。
圖3-12 自適應濾波原理
圖3-12所示的自適應濾波器有兩個輸入:x(n)和d(n),兩個輸出:y(n)和e(n)。其中x(n)可以是單輸入信號,也可以是多輸入信號。其餘3個信號都是時間序列。在不同的應用場合中這些信號代表著不同的具體內容。
E. 為什麼自適應濾波演算法發散不收斂
要提自適應濾波器,首先就得知道什麼是最優濾波器.
最優濾波器就是某種准則(通常是最小均方誤差)下,性能最優的濾波器.
而實際中,由於系統環境是時變的,以及直接計算最優濾波器往往計算量較大,實時處理可能存在困難,所以可以讓濾波器從某個初始狀態出發,按照設定的規則,依據觀測到的系統輸入和輸出,調整濾波器,使其不斷逼近當前的最優濾波器.這個逼近的過程就是收斂的過程.
自適應濾波器的瞬態性能分析很復雜,特別是對於系統也可能時變的情況.現在理論也往往只是定性分析.如何實現「好」的自適應濾波器,往往取決於目標應用的特點.也就是說,沒有最好的,只有最合適的.
你引用的這段文字,一看就是些APA演算法的文章.LMS和RLS是計算復雜度和收斂速度的兩極,APA介於兩者之間,此話不假.但是憑此說哪個好實在是沒有意義的事情.要具體應用問題,具體分析.
F. lms演算法在自適應濾波器中解決了什麼問題
自適應演算法所採用的最優准則有最小均方誤差(LMS)准則,最小二乘(LS)准則、最大信噪比准則和統計檢測准則等,其中最小均方誤差(LMS)准則和最小二乘(LS)准則是目前最為流行的自適應演算法准則。
x(n)代表n時刻的輸入信號,y(n)代表n時刻的輸出信號,d(n)代表n時刻的期望信號,通過期望信號與輸出信號之差e(n)來自動調節自適應濾波器的參數,使下一時刻的輸出y(n+1)能夠更加接近期望信號。
G. matlab實現自適應濾波器演算法
http://www.mathworks.com/matlabcentral/fileexchange/3582-adaptive-filtering
H. LMS自適應濾波演算法中要求的期望輸出和濾波器的輸入之間有什麼區別,採集的實際信號往往是無法知道期望輸出
自適應濾波演算法有幾種應用類型,不同類型的目的、原理和手段不同,所以相對應的選取輸入和期望信號也很不一樣。
1.系統辨識:當我們想描述一個未知系統(如一組復雜的模擬電路),解析的算出系統的沖擊響應或者系統函數是比較困難的。這時,我們就可以用未知系統的輸入和輸出訓練自適應濾波器(未知系統的輸入作為自適應濾波器的輸入,未知系統的輸出作為自適應濾波器的期望信號,當自適應濾波器收斂後,對應的濾波器就可以看做是未知系統的近似)。
I. 用Matlab軟體實現變長NLMS自適應濾波器演算法
一種具有雙瞬變因子的LMS自適應濾波演算法
曾召華 劉貴忠 馬社祥
(西安交通大學信息與通信工程研究所 西安710049)
作者在文獻〔4〕中提出了一種改進的瞬變步長SPLMS自適應濾波演算法。本文在SPLMS演算法的基礎上,進一步提出一種基於瞬變步長、瞬變平滑因子的雙瞬變SPLMS演算法—DSPLMS演算法。該演算法除具有常規LMS演算法簡單的優點外,還具有更高的起始收斂速率、更小的權失調雜訊和更大的抑噪能力。文中重點討論瞬變步長、瞬變平滑因子的變化特性。計算機模擬結果支持了理論分析。
自適應濾波器,失調雜訊,收斂速度,最小均方誤差,瞬變因子
1 引言
自適應濾波器及其相應演算法是多年來人們廣泛研究的課題。基於Widrow-Hoff標準的LMS演算法和其相應的自適應濾波器以其演算法和結構簡單,便於實時信號處理等優點,在不同領域得到了最為廣泛的應用。而為克服常規的固定步長LMS或牛頓LMS(Newton LMS,即NLMS)自適應演算法在收斂速率、跟蹤速率與權失調雜訊之間要求上存在的較大矛盾,人們發展了各種各樣的改進型LMS演算法,如基於瞬變步長LMS自適應濾波演算法〔1~6〕、基於正交變換(DCT、FFT、小波變換、子帶濾波)的新型LMS均衡演算法〔7~8〕。基於模糊判斷的自適應LMS系統識別和基於最小四次均方誤差的LMS自適應平穩收斂演算法〔9~10〕。在所有改進型LMS演算法中,瞬變步長LMS自適應濾波演算法是研究最為廣泛的一類LMS自適應濾波演算法。本文演算法也是基於瞬變因子的一種改進LMS自適應濾波演算法。
2 SPLMS演算法分析及問題的提出
在文獻〔4〕中,作者對上述方案進行了大量的計算機模擬和理論分析,結果表明:(1)上述諸種演算法的收斂速率與系統輸入信噪比SNR直接相關,信噪比SNR越高,它們的收斂速率普遍提高;隨著信噪比SNR的降低,它們的收斂速率減慢,甚至出現發散現象,因此它們必須在弱干擾下完成規一化起動,即在起始過程中雜訊要相當小,否則效果不佳。(2)在上述所有演算法中,由於採用瞬時平方誤差性能函數e2k來代替均方誤差性能函數,所以其演算法的權值收斂過程表現為加權矢量的平均值變化規律和由於雜訊引起的隨機起伏項的疊加。因此,雜訊方差越大,則隨機起伏項越大,表現為權值振動也就越大。(3)為了追求更快的收斂性,往往增大μ和M,但濾波器階數越高,步長因子μ和輸入功率越大,就便得失調系數也越大。在有限次數起動迭代過程中,也就很難收斂到較穩態值,所以必須尋求更佳的瞬態步長演算法。
文獻〔4〕在准最小均方(Pseudo-LMS,即PLMS)誤差演算法基礎上通過採用滑動時間窗,減少PLMS演算法起動過程的計算量;同時在權值迭代中加一平滑迭代而使PLMS演算法具備全局較強的抗噪性能,較快速收斂性能而提出了SPLMS演算法,即:
其中rk為M階濾波器輸入信號的功率估值;Wk為濾波器的第k步M維最優權矢量估值;Xk是濾波器輸入信號的M維輸入數據矢量;dk為希望輸出;μk為濾波器第k步瞬態步長。切換條件中,閾值μ類似於LMS演算法的步長因子μL,滿足:
μL<μ<1/trR,R=E〔XkXTk〕(7)
為待定的演算法常數,是μk變化的動態平衡點。而α是一常數為平滑因子,它決定上一次的權值變化對本次權值更新的影響程度。k0是採用式(2)規一化啟動後,演算法收斂到較穩態時的步數。式(4)是μk下降的遞推演算法,式(5)是μk上升的平滑遞推演算法。λ為上升的速度因子,滿足0<λ<1。在實際應用中,考慮到學習過程的啟動速度,一般取較大的λ值,即:
0.9<λ<1,k0=25~35,|α|<0.3(8)
SPLMS演算法的實質是:在開始k0步中,採用啟動速度較快的MLMS(Mend LMS)演算法收斂到相對較穩態的狀態;然後在k≥k0+1過程中,採用瞬態步長μk來訓練演算法。而μk根據不同的切換條件將圍繞μ作升降變化,其迭代計算主要表現為不降即升的動態過程。α主要根據經驗來取值,輸入數據的非平穩性越大,雜訊方差越大時,增大α可明顯抑制振動,從而加速收斂過程;在雜訊小時減小α。
但SPLMS演算法也有一明顯不足,即α主要根據經驗來取值,沒有理論上的確切依據。α取值不當,反而容易造成演算法收斂性能更差,甚至發散的現象。從理論上分析,α與瞬態步長μk和輸出誤差ek(文中定義為:ek=dk-WTk Xk)應有一定關系。在演算法啟動階段,ek較大,為追求啟動速度而常取較大步長μk,但μk越大,權失調系數也就越大,有時反而起不到應有的作用,這時就應相應增加α值來平滑權失調雜訊;在演算法漸趨穩定,步長μk漸趨於常數,ek漸趨於0,此時α也應漸趨於0。綜合起來就是:α應隨步長μk和誤差ek瞬時變化而變化,也應是一瞬變因子。本文重點就是尋求瞬變因子αk的數學表達式以滿足上述分析的要求。
3 改進的雙瞬變因子SPLMS演算法——DSPLMS演算法
3.1 μk的變化特性
從式(4)和式(5)可以看出,在k≥k0+1過程中,μk根據不同的切換條件將圍繞μ作升降變化,μk的迭 代計算主要表現為不降即升的動態過程。對於式(5),設k≥kr時,μk<μ,則在k≥kr>k0+1的上升過程中:
即上升速度按指數衰減,使趨於平衡點μ的上升速度迅速減小。其變化過程類似於一電阻電容串聯電路上電容的充電過程。對式(4),由於μk=μk-1/(1+Rk),Rk>0,即使很小的Rk經過一步迭代就足以使μk<μ,再次切換到上升過程。當rk較大時,下降形成的負脈沖也較大。
綜上所述,在k≥k0+1的收斂過程中,μk的時變特性等價於幅值極不對稱的隨機正負尖脈沖序列組成的瞬態分量和直流分量μ的線性疊加。瞬態分量的負脈沖強度與rk瞬值對應,有利於抑制局部自激或短暫發散,減小權矢量雜訊,提高穩定度。在rk較小、演算法漸趨於穩定時,瞬變分量趨於0,μk~μ。
3.2 αk的變化特性
定義:ΔWk=Wk+1-Wk為自適應濾波器的權系數增量;ξ為均方誤差性能函數,ξ=E〔ek〕2,ek=dk-WTk Xk為輸出誤差,則SPLMS演算法的權系數更新公式由式(1)可重寫為:
Wk+1=Wk-μk^Wξk+αΔWk-1(10)
其中Wξ為ξ的梯度函數,^W為Wξ的第k步估計。由式(10)的系數更新公式,我們可寫出均方誤差性能函數的表達式:
式中上標T表示矢量的轉置。若用一矢量^Wζk+1去左乘式(10),則可得到:
^Wξk+1Wk+1=^Wζk+1Wk-μk^Wζk+1^Wζk+^Wζk+1αΔWk-1(13)
利用式(12)的結論,可將式(13)化簡為:
^TWζk+1ΔWk=0(14)
由於參量μk和α均為實的標量因子,故式(14)又可寫成:
(μk^TWζk+1)(αΔWk)=0(15)
式(15)清楚地表明:在SPLMS演算法中,自適應濾波器的權系數在迭代過程中,其均方誤差性能函數的梯度估值與權系數增量始終存在一個正交關系。ΔWk-1對ΔWk的調節作用是在當前梯度估值方向上,給出與梯度估值方向正交矢量,並以這兩個矢量所構成的合矢量來改變權系數空間的權重。
對於FIR結構的LMS自適應系統而言,其均方誤差性能函數在平穩輸入時為一個二次型函數,在收斂點附近仍可視為一個二次型函數,故有:
ξ(Wk+1)=WTk RWk-2WTk P+C(16)
式中R=E〔XTk Xk〕為輸入信號的自相關矩陣,P=E〔dkXk〕為所需信號與輸入信號的互相關矢量,C=E〔d2k〕,則由式(16)可得:
將式(17)代入式(18),則式(18)可變形為:
式(19)就是本文給出的瞬變平滑因子αk的數學表達式。顯然,它滿足前面分析時所提出的要求,且在演算法達到穩態收斂時,滿足:
limk→∞αk=0(20)
3.3 改進的雙瞬變SPLMS演算法——DSPLMS演算法
用式(19)中αk的表達式替換式(1)中的α,就得到本文提出的具有雙瞬變因子的LMS演算法——DSPLMS演算法,即
Wk+1=Wk+2μk(dk-WTk Xk)Xk+αk(Wk-Wk-1)(21)
μk=λ/(1+2λrk),0≤k≤k0(22)
由式(19)、(20)可知,αk是一個與μk成正比且具有衰減性的瞬變因子,從而使本文提出的DSPLMS演算法比SPLMS演算法更能快速穩定收斂;與常規LMS演算法相比,其性能有極大的提高,為實時信號處理提供了一個較好的演算法。
4 計算機模擬
模擬實驗的結構如圖1所示,其中dk為隨機輸入信號,nk為高斯白雜訊,ek為輸出誤差,xk為自適應濾波器的輸入,yk為濾波器輸出,此時xk=dk+nk。
在圖2中,dk是均值為0、方差為1的高斯白雜訊;nk是與dk不相關的均值為0、方差為1的高斯白雜訊;濾波器參數:M=32,λ=0.9,μL=0.005,μ=0.01,α=0.1。在圖3中,nk為均值為0、方差為0.1的高斯白雜訊,其它參數同圖2。圖2、3為分別採用LMS、SPLMS和DSPLMS演算法進行濾波的學習曲線比較圖。
從圖2(強干擾啟動)和圖3(較弱干擾啟動)中可以看出:在強干擾下,DSPL MS 具有比SPLMS好、比LMS好得多的啟動速度和收斂速度;而在弱干擾下,DSPLMS仍具有比SPLMS快、比LMS快得多的啟動速度。從圖中同時還可看出:DSPLMS與SPLM S具有幾乎相同的收斂速度,它們的收斂速度比LMS快得多。
5 結語
加進瞬變平滑項的規一化起動,使DSPLMS具有更高的起始收斂速度、更小的權失調雜訊和更大的抑噪能力;在平穩連接之後的穩態過程中,該演算法趨於步長為μ的LMS演算法性能,但由於瞬變分量負脈沖的作用,在相近的權失調量下可按式(7)取較大的μ值,增強演算法對時變參數過程的跟蹤處理能力;輸入數據的非平穩性越大,雜訊方差越大時,加進的瞬變平滑項使權失調雜訊減小,從而使本文提出的DSPLMS演算法比SPLMS演算法更能快速穩定地收斂;與常規LMS演算法相比,其性能有極大的提高,可以明顯抑制振動,從而加速收斂過程。
網址:
J. 自適應濾波方法涉及的理論基礎有哪些
自適應濾波方法對某一點的濾波平滑,依賴於該點鄰域的信息統計,而該鄰域的尺寸范圍也由該鄰域的信息統計決定.自適應濾波方法常用於條紋密度變化較大的條紋圖像的預處理。
原理:利用前一時刻獲得的濾波結果,自動調節現時刻的濾波器參數,以適應信號和雜訊的未知特性,從而實現最優濾波。
最優的准則:
1、最小均方誤差准則(minimum mean square error, MMSE)
使誤差的均方值最小
2、最小二乘准則(least square error, LSE)
使誤差的平方和最小
(10)自適應濾波演算法擴展閱讀
自適應濾波的研究對象是具有不確定的系統或信息過程。這里的「不確定性」是指所研究的處理信息過程及其環境的數學模型不是完全確定的。其中包含一些未知因素和隨機因素。
任何一個實際的信息過程都具有不同程度的不確定性,這些不確定性有時表現在過程內部,有時表現在過程外部。從過程內部來講,描述研究對象即信息動態過程的數學模型的結構和參數是設計者事先並不一定能確切知道的。作為外部環境對信息過程的影響,可以等效地用擾動來表示。
這些擾動通常是不可測的,它們可能是確定性的,也可能是隨機的。此外,還有一些測量噪音 也以不同的途徑影響信息過程。這些擾動和雜訊的統計特性常常是未知的。
面對這些客觀存在的各式各樣的不確定性,如何綜合處理該信息過程,並使得某一些指定的性能指標達到最優或近似最優,這就是自適應濾波所要解決的問題。