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;
维纳滤波器、卡尔曼系列滤波器以及自适应LMS、RLS滤波器matlab代码实现
最新推荐文章于 2024-05-31 20:45:33 发布
该博客介绍了如何使用MATLAB代码实现自适应滤波器(LMS、RLS)、卡尔曼滤波器(包括扩展卡尔曼滤波)以及维纳滤波器,提供了详细的示例代码,帮助读者理解和应用这些滤波算法。
摘要由CSDN通过智能技术生成