📄 rls.m
字号:
clc;
clear all;
close all;
hold off
hh=5; %滤波权数
M=500;
w=randn(1,M);
x=zeros(1,M); %期望响应
xx=zeros(1,M+4);
xx(1,1)=0;xx(1,2)=0;xx(1,3)=0;xx(1,4)=0;
for i=5:M+4
xx(1,i)=w(1,i-4)+1.352*xx(1,i-1)-1.338*xx(1,i-2)+0.662*xx(1,i-3)-0.240*xx(1,i-4);
end
x(1,1:M)=xx(1,5:M+4);
v=randn(1,M); %白噪声
y=x+v; %滤波器输入
%RLS算法
Lambda = 0.98 ; %设置遗忘因子
Delta = 0.001 ;
P = Delta * eye ( hh, hh ) ;
w = zeros ( hh, 1 ) ; %w初始化
for n = hh : M ;
u = y(n:-1:n-hh+1) ;
s(n)= w' * u'; %系统输出
pi_ = u * P ;
k = Lambda + pi_ * u';
K = pi_'/k;
e(n) = x(n) - w' * u';
w = w + K * e(n) ;
end;
%画图
subplot(211);
plot(x,'b-')
hold on;
plot(s,'r');
title('RLS的期望输出和实际输出对比');
subplot(212);
plot((abs(e))) ;
title('RLS的误差值');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -