?? rls-matlab.txt
字號:
RLS算法的仿真程序:
% RLS算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % 自適應濾波權數
Lambda = 0.98 ; % 遺忘因子
Delta = 0.001 ; % 相關矩陣R的初始化
x = randn(NoOfData, 1) ;%高斯隨機系列
h = rand(Order, 1) ; % 系統隨機抽樣
d = filter(h, 1, x) ; % 期望輸出
% RLS算法的初始化
P = Delta * eye ( Order, Order ) ;%相關矩陣
w = zeros ( Order, 1 ) ;%濾波系數矢量的初始化
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;%延時函數
pi_ = u' * P ;%互相關函數
k = Lambda + pi_ * u ;
K = pi_'/k;%增益矢量
e(n) = d(n) - w' * u ;%誤差函數
w = w + K * e(n) ;%遞歸公式
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;%誤差相關矩陣
w_err(n) = norm(h - w) ;%真實估計誤差
end ;
% 作圖表示結果
figure ;
plot(20*log10(abs(e))) ;%| e |的誤差曲線
title('學習曲線') ;
xlabel('迭代次數') ;
ylabel('輸出誤差估計') ;
figure ;
semilogy(w_err) ;%作實際估計誤差圖
title('矢量估計誤差') ;
xlabel('迭代次數') ;
ylabel('誤差權矢量') ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -