⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rls.m

📁 本源码用MATLAB语言实现了自适应RLS算法
💻 M
字号:
clear;
clc;

randn('seed', 0) ; 
rand('seed', 0) ; 


NoOfData = 1785 ; 
Order =40 ;

Lambda = 0.98; 
Delta = 0.001 ;  

x =randn(NoOfData,1);
t=0:((4*pi)/1784):4*pi;
x=x+(sin(t))';
h =rand(Order, 1);  
% d=sin(t);
d = filter(h, 1, x);

P = Delta*eye (Order, Order); 
w = zeros ( Order, 1 ) ; 

for n = Order : NoOfData ; 
   u = x(n:-1:n-Order+1) ; 
%    k=Lambda^(-1).*P*u./(1+Lambda^(-1).*u'*P*u);
%    e(n)=d(n)-w'*u;
%    w=w+k.*conj(e(n));
%    P=Lambda^(-1).*P-Lambda^(-1).*k*u'*P;
%    y(n)=w'*u;
%    e1(n)=d(n)-w'*u;
% end;
% 
% figure;
% plot(y);
    pi_ = u' * P ; 
    k = Lambda + pi_ * u ; 
    K = pi_'/k;                    %RLS增益矢量
    e(n) = d(n) - w' * u ;         %计算前验估计误差
    w = w + K * e(n) ;             %更新权系数矢量
    y(n)=w'*u;                     %输出信号
    PPrime = K * pi_ ; 
    P = ( P - PPrime ) / Lambda ;  %递推系数逆矩阵
    w_err(n) = norm(h - w) ; 
end ; 
e
xn=fft(x)
yn=fft(y)
figure;
subplot(211),plot(x);ylabel('带噪声的输入');
subplot(212),plot(y);ylabel('滤波器输出');

figure;
subplot(211),plot(x);ylabel('带噪声的输入');
subplot(212),plot(e);ylabel('输出误差');

figure
subplot(211);
plot(abs(xn));
ylabel('输入');
subplot(212);
plot(abs(yn));
ylabel('输出');
title('FFT频谱分析图')
% figure ; 
% plot(20*log10(abs(e))) ; 
% title('Learning Curve') ; 
% xlabel('Iteration Number') ; 
% ylabel('Output Estimation Error in dB') ; 
% 
% figure ; 
% semilogy(w_err) ; 
% title('Weight Estimation Error') ; 
% xlabel('Iteration Number') ; 
% ylabel('Weight Error in dB') ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -