📄 lms_descorr__2.m
字号:
% 解相关型LMS算法滤波
M = 20; % 运行次数
N = 1000; % 信号的长度
n = 0:N-1;
p = 0.08; % 修整因子
s = sin(2*pi*n/10); % 初始信号
u = s + 0.36*randn(1,N); % 叠加噪声后的信号
% 信号叠加噪声波形图
figure(1);
plot(n,u);
title('信号叠加噪声波形图');
xlabel('n');ylabel('u');
y = zeros(1,N); % 初始化经过自适应滤波器后的信号为零向量
w = zeros(1,N); % 初始化自适应滤波器的权向量为零向量
e = zeros(N); % 初始化误差e(n)的为零向量
vare = zeros(N); % 初始化误差的平方e(n)^2的为零向量
estd = zeros(N); % 初始化均方误差E{e(n)^2}的为零向量
vare1 = ones(1,N); % 初始化误差的平方e(n)^2的为1向量
estd1 = ones(1,N); % 初始化均方误差E{e(n)^2}的为1向量
k = 10; % 自适应滤波器的阶数
l = zeros(1,N); % 学习速率参数
y(1:k) = u(1:k); % 令经过自适应滤波器后的信号y的前k个样值等于u的前k个样值
% 解相关型LMS算法滤波
for j = (k + 1):M
u = s + 0.36*randn(1,N); % 叠加噪声后的信号
for n=(k + 2):N
e(j,n) = s(n) - w((n-1):(n+(k - 1))) * u(n:-1:(n-k))'; % 误差
a(n) = (u((n-1):-1:(n-(k + 1)))*u(n:-1:(n-k))')/(u((n-1):-1:(n-(k + 1)))*u((n-1):-1:(n-(k + 1)))'); % 相关系数
v(n:-1:(n-k)) =u(n:-1:(n-k)) - a(n)*u((n-1):-1:(n-(k + 1))); % 更新方向向量
l(n) = p*e(j,n)/(u(n:-1:(n-k))*v(n:-1:(n-k))'); % 学习速率参数
w((n):(n+k)) = w((n-1):(n+(k - 1))) + l(n)*v(n:-1:(n-k)); % 更新自适应滤波器的权向量
y(n) = w((n):(n+k)) * u((n):-1:(n-k))'; % 经过自适应滤波器后的信号
vare(j,n) =e(j,n)^2; % 误差的平方e(n)^2
estd(j,n) = vare(j,(n:-1:1))*vare(j,(n:-1:1))'/n; % 均方误差E{e(n)^2}
end
end
vare1 = (vare1*vare)/M; % 统计平均意义下e(n)^2
estd1 = (estd1*estd)/M; % 统计平均意义下学习曲线
% 自适应滤波输出
figure(2);
plot(y);
title('解相关LMS自适应滤波输出');
xlabel('n');ylabel('y');
% LMS自适应滤波器的e(n)^2的曲线
figure(3);
plot(vare1);
title('解相关LMS自适应滤波器的e(n)^2的曲线 ');
xlabel('n');ylabel('e(n)^2');
% LMS自适应滤波器的学习曲线图
figure(4);
plot(estd1);
title('解相关LMS自适应滤波器的学习曲线图 ');
xlabel('n');ylabel('E[e(n)^2]');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -