⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lms_switchfield.m

📁 对信道均衡的算法
💻 M
字号:

% 变换域型LMS算法滤波  变步长
M  = 20;                        % 运行次数
N = 2000;                       % 信号的长度
n = 0:N-1;
s = sin(2*pi*n/10);             % 初始信号
u = s + 0.036*randn(1,N);       % 叠加噪声后的信号
% 信号叠加噪声波形图
figure(1); 
plot(n,u);
title('信号叠加噪声波形图');
xlabel('n');ylabel('u');

y = zeros(1,N);                 % 初始化经过自适应滤波器后的信号为零向量
x = 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;                         % 自适应滤波器的阶数
y(1:k) = u(1:k);                % 令经过自适应滤波器后的信号y的前k个样值等于u的前k个样值

mu0 = 0.65;                    % 初始更新步长因子
A = hilb((k+1));                % 创建一个k阶Hilbert矩阵
[P,H] = hess(A);                % 对A进行Hessenberg分解,其中P为酉矩阵
% 变换域型LMS算法滤波
for j = (k + 1):M
     u = s + 0.36*randn(1,N);   % 叠加噪声后的信号 
for n=(k+2):N
    mu = mu0/(1 + (n/10));                                     % 先搜索后收敛步长因子
    x(n:-1:(n-k)) = u(n:-1:(n-k))*P;                            % 对输入数据进行酉变换
    
    w((n-1):(n+(k - 1))) = w((n-1):(n+(k -1)))*P;               % 对滤波权向量进行酉变换
    
    e(j,n) = s(n) - w((n-1):(n+(k-1))) * x(n:-1:(n-k))';        % 误差
    
      
    w((n):(n+k)) = w((n-1):(n+(k -1))) + mu*e(j,n)*x((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 + -