資源簡介
自適應的最小均方(LMS)算法:只要自適應線性組合器每次迭代運算時都知道輸入信號和參考響應,選用LMS算法很合適。

代碼片段和文件信息
function?[ynWen]=LMS(xndnMmuitr)
%?LMS(Least?Mean?Squre)算法
%?輸入參數:
%?????xn???輸入的信號序列??????(列向量)
%?????dn???所期望的響應序列????(列向量)
%?????M????濾波器的階數????????(標量)
%?????mu???收斂因子(步長)??????(標量)?????要求大于0小于xn的相關矩陣最大特征值的倒數????
%?????itr??迭代次數????????????(標量)?????默認為xn的長度M %?輸出參數:
%?????W????濾波器的權值矩陣?????(矩陣)
%??????????大小為M?x?itr
%?????en???誤差序列(itr?x?1)????(列向量)??
%?????yn???實際輸出序列?????????????(列向量)
%?參數個數必須為4個或5個
if?nargin?==?4?????????????????%?4個時遞歸迭代的次數為xn的長度?
????itr?=?length(xn);
elseif?nargin?==?5?????????????%?5個時滿足M ????if?itr>length(xn)?|?itr ????????error(‘迭代次數過大或過小!‘);
????end
else
????error(‘請檢查輸入參數的個數!‘);
end
%?初始化參數
en?=?zeros(itr1);?????????????%?誤差序列en(k)表示第k次迭代時預期輸出與實際輸入的誤差
W??=?zeros(Mitr);?????????????%?每一行代表一個加權參量每一列代表-次迭代初始為0
%?迭代計算
for?k?=?M:itr??????????????????%?第k次迭代
????x?=?xn(k:-1:k-M+1);????????%?濾波器M個抽頭的輸入
????y?=?W(:k-1).‘?*?x;????????%?濾波器的輸出
????en(k)?=?dn(k)?-?y?;????????%?第k次迭代的誤差
????
????%?濾波器權值計算的迭代式
????W(:k)?=?W(:k-1)?+?2*mu*en(k)*x;
end
%?求最優時濾波器的輸出序列
yn?=?inf?*?ones(size(xn));
for?k?=?M:length(xn)
????x?=?xn(k:-1:k-M+1);
????yn(k)?=?W(:end).‘*?x;
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1461??2009-10-11?16:17??LMS.m
?????文件???????16384??2009-10-11?16:18??一個實例.doc
- 上一篇:語音信號的線性預測編碼MATLAB程序
- 下一篇:KNN算法的Matlab實現
評論
共有 條評論