warning('off');
clear;clc;
x = normrnd(5,2,1,2000);
index = 5;
if index == 1 % 自适应滤波LMS
N = 50;
W = zeros(N,1);
d = 5;
miu = (0+1/(29*N))*0.5;
x_hat_set = zeros(1,2000);
for i = 1:2000
x_n_hat = x(i);
if i >= N
X = x(i:-1:i-N+1)';
x_n_pred = X'*W;
W = W+2*miu*(d-x_n_pred)*X;
x_n_hat = X'*W;
end
x_hat_set(i) = x_n_hat;
end
figure(1)
plot(1:2000,x,1:2000,x_hat_set);
delta = abs(x_hat_set-5);
figure(2)
plot(1:2000,delta);
var(x_hat_set(100:end))
elseif index == 2 % 卡尔曼滤波/扩展卡尔曼滤波
Q = 1e-5;
R = 4;
x_nb_hat = 5;
F = 1;
H = 1;
M = 1;
x_n_hat_set = zeros(1,2000);
for j = 1:2000
x_n_pred = F*x_nb_hat;
M_pred = F'*M*F+Q;
K = M_pred*H'/(H*M_pred*H'+R);
维纳滤波器、卡尔曼系列滤波器以及自适应LMS、RLS滤波器matlab代码实现
最新推荐文章于 2025-05-27 00:00:13 发布