RLS自适应滤波算法Matlab仿真代码
时间: 2023-07-05 20:05:38 浏览: 56
下面是一个简单的 RLS 自适应滤波算法 Matlab 仿真代码:
```matlab
% RLS自适应滤波算法
clear all; close all; clc;
% 生成待滤波信号
N = 500; % 信号长度
n = [0:N-1];
x = sin(2*pi*0.05*n) + sin(2*pi*0.3*n); % 两个正弦波叠加
d = x + 0.3*randn(1,N); % 加入噪声
% 算法参数
lambda = 0.99; % 遗忘因子
delta = 1e-3; % 初始协方差矩阵的对角线元素
w = zeros(2,1); % 初始权值
P = delta*eye(2); % 初始协方差矩阵
% RLS算法
y = zeros(1,N);
for i = 1:N
u = [x(i); y(i)];
K = P*u/(lambda + u'*P*u);
e = d(i) - w'*u;
w = w + K*e;
P = (P - K*u'*P)/lambda;
y(i) = w'*u;
end
% 绘制结果
figure;
subplot(2,1,1);
plot(n, x, 'b', n, d, 'r--');
xlabel('样本序号'); ylabel('幅值');
legend('原始信号', '带噪声信号');
subplot(2,1,2);
plot(n, x, 'b', n, y, 'r--');
xlabel('样本序号'); ylabel('幅值');
legend('原始信号', '滤波后信号');
```
在这个代码中,我们首先生成了一个双频正弦波信号,并且加入了一些高斯白噪声。然后,我们使用 RLS 算法进行信号滤波,通过比较滤波前后的信号,可以看出 RLS 算法的有效性。
相关推荐













