?? rls0.m
字號:
% RLS算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % 自適應(yīng)濾波權(quán)數(shù)
Lambda = 0.98 ; % 遺忘因子
Delta = 0.001 ; % 相關(guān)矩陣R的初始化
pi=3.14;
Fs=0.01;
%for n=1:NoOfData;
%x(n)=100*sin(2*pi*Fs*n);
%h=[0.1,0.2,0.3,0.4,
% 0.5,0.6,0.7,0.8,
% 0.9,1.0,1.1,1.2,
%1.3,1.4,1.5,1.6,
%1.6,1.5,1.4,1.3,
%1.2,1.1,1.0,0.9,
%0.8,0.7,0.6,0.5,
%0.4,0.3,0.2,0.1];
x = randn(NoOfData, 1) ;%高斯隨機系列
h = rand(Order, 1) ; % 系統(tǒng)隨機抽樣
d = filter(h, 1, x) ; % 期望輸出
%d=sin(2*pi*Fs*(n-16));
%Initialize 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 ;
% 作圖表示結(jié)果
figure ;
plot(20*log10(abs(e))) ;%| e |的誤差曲線
title('學(xué)習(xí)曲線') ;
xlabel('迭代次數(shù)') ;
ylabel('輸出誤差估計') ;
figure ;
semilogy(w_err) ;%作實際估計誤差圖
title('矢量估計誤差') ;
xlabel('迭代次數(shù)') ;
ylabel('誤差權(quán)矢量') ;
figure;
plot(x,'red');
title('輸入信號') ;
xlabel('n') ;
ylabel('x(n)') ;%|w|的曲線
figure;
plot(d,'red');
title('參考信號') ;
xlabel('n') ;
ylabel('d(n)') ;%應(yīng)該得到的曲線
figure ;
plot(w,'red') ;
title('權(quán)收斂過程') ;
xlabel('n') ;
ylabel('濾波系數(shù)') ;%|w|的曲線
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -