用MATLAB编写一段2阶LMS横向滤波器和格型滤波器极值逼近比较的程序
时间: 2023-11-18 17:05:19 浏览: 76
自适应滤波器
下面是一个用MATLAB编写的2阶LMS横向滤波器和格型滤波器极值逼近比较的程序:
```
% 生成随机信号
n = 1000;
x = randn(n, 1);
% 生成噪声
noise = 0.1 * randn(n, 1);
% 生成目标信号
h = [1 0.5 0.2]';
d = conv(x, h);
d = d(1:n) + noise;
% 2阶LMS横向滤波器
mu = 0.01;
w = zeros(3, 1);
y1 = zeros(n, 1);
e1 = zeros(n, 1);
for i = 3:n
x_i = x(i:-1:i-2);
y1(i) = w' * x_i;
e1(i) = d(i) - y1(i);
w = w + mu * e1(i) * x_i;
end
% 格型滤波器极值逼近
y2 = zeros(n, 1);
e2 = zeros(n, 1);
for i = 3:n
y2(i) = h' * x(i:-1:i-2);
e2(i) = d(i) - y2(i);
h = h + mu * e2(i) * x(i:-1:i-2);
end
% 绘图
subplot(3, 1, 1);
plot(d);
title('目标信号');
subplot(3, 1, 2);
plot(y1);
title('2阶LMS横向滤波器输出');
subplot(3, 1, 3);
plot(y2);
title('格型滤波器极值逼近输出');
```
该程序生成一个长度为1000的随机信号,并将其与一个长度为3的目标滤波器进行卷积以生成目标信号。随后,程序使用2阶LMS横向滤波器和格型滤波器极值逼近对目标信号进行滤波,并将它们的输出与目标信号进行比较。最后,程序绘制了目标信号、2阶LMS横向滤波器输出和格型滤波器极值逼近输出的图形。
阅读全文