您的当前位置:首页LMS算法实验报告

LMS算法实验报告

2020-08-19 来源:爱问旅游网
LMS算法实验报告

基于LMS算法的⾃适应均衡器设计及MATLAB实现⼀.实验⽬的

1.了解LMS算法的基本原理;2.掌握MATLAB的使⽤⽅法;

3.初步体会分析问题、研究问题的基本步骤和⽅法,为以后科研积累经验。⼆.实验原理1. LMS算法简介

在移动通信环境中,多径传播效应和频率选择性衰落会导致传输信号失真。失真主要表现为码间⼲扰,码间⼲扰是降低数字通信系统性能的⼀个主要因素。在这样的信道条件下设计实际的数字通信系统以⾼速传输数据时,往往不能获得⾜够准确的信道频率响应⽤于调制和解调器的最佳滤波器的设计。这是因为在每次通信时信道的路由不同,对于这样的信道,要设计最佳固定解调滤波器是不可能的。在这样的情况下,应该采取信道均衡的⽅式以减⼩失真。

信道均衡是通信技术和信号处理的基本问题之⼀,其⽬的在于克服传送的符号码和符号码之间的相互⼲扰,这种⼲扰是因为信道的⾮理想特性造成的。由于通信信道可能是未知和变化的,就需要⾃适应的调整均衡器,使得整个传输系统输出的符号码和符号码之间的⼲扰被消除。信道均衡可以利⽤发送的训练信号来开始,这称为⾃动均衡。

在设计⾃适应均衡器的多种⽅法中,最⼩均⽅⾃适应算法(LMS)采⽤梯度搜索法,这使收敛到最优解远⽐其他算法快,⽽且该算法原理简单,实施容易,所以⽬前这⼀算法已⼴泛⽤于计算⾃适应滤波器的权系数。2.LMS算法的原理(1)⾃适应滤波原理

⾃适应滤波器的特性变化是由⾃适应算法通过调整滤波器系数来实现的。⼀般⽽⾔,⾃适应滤波器由两部分组成,⼀是滤波器结构,⼆是调整滤波器系数的⾃适应算法。⾃适应滤波器的结构采⽤FIR或IIR结构均可,由于IIR滤波器存在稳定性问题,因此⼀般采⽤FIR 滤波器作为⾃适应滤波器的结构。图1给出了⾃适应滤波器的⼀般结构。

图1为⾃适应滤波器结构的⼀般形式,图中x(n)为输⼊信号,通过参数可调的数字滤波器后产⽣输出信号y(n),将输出信号y(n)与标准信号(或者为期望信号)d(n)进⾏⽐较,

得到误差信号e(n)。e(n)和x(n)通过⾃适应算法对滤波器的参数进⾏调整,调整的⽬的使得误差信号e(n)最⼩。

⾃适应滤波器设计中最常⽤的是FIR横向型结构。图2是横向型滤波器的结构⽰意图。

其中:x(n)为⾃适应滤波器的输⼊;w(n)为⾃适应滤波器的冲激响应:w(n)={w(O),w(1),…,w(N-1)};y(n)为⾃适应

(2)⾃适应滤波算法

⾃适应滤波器除了包括⼀个按照某种结构设计的滤波器,还有⼀套⾃适应的算法。⾃适应算法是根据某种判断来设计的。⾃适应滤波器的算法主要是以各种判据条件作为推算基础的。通常有两种判据条件:最⼩均⽅误差判据和最⼩⼆乘法判据。LMS 算法是以最⼩均⽅误差为判据的最典型的算法,也是应⽤最⼴泛的⼀种算法。

最⼩均⽅误差(Least Mean Square,LMS)算法是⼀种易于实现、性能稳健、应⽤

⼴泛的算法。所有的滤波器系数调整算法都是设法使y(n)接近d(n),所不同的只是对于这种接近的评价标准不同。LMS算法的⽬标是通过调整系数,使输出误差序列

e(n)=d(n)-y(n)的均⽅值最⼩化,并且根据这个判据来修改权系数,该算法因此⽽得名。误差序列的均⽅值⼜叫“均⽅误差”(Mean Sqluare Error,MSE)。理想信号d(n)与滤波器输出y(n)之差e(n)的期望值最⼩,并且根据这个判据来修改权系数wi(n)。由此产⽣的算法称为LMS。均⽅误差ε表⽰为:

对于横向结构的滤波器,代⼊y(n)的表达式:

其中:R=E[X(n)XT(n)]为N×N的⾃相关矩阵,它是输⼊信号采样值间的相关性矩阵。

P=E[d(n)X(n)]为N×1互相关⽮量,代表理想信号d(n)与输⼊⽮量的相关性。在均⽅误差ε达到最⼩时,得到最佳权系数它应满⾜下式:

这是⼀个线形⽅程组,如果R矩阵为满秩的,R-1存在,可得到权系数的最佳值满⾜:W*=R-1p。⽤完整的矩阵表⽰为:

显然φx(m)=E[x(n)x(n-m)]为x(n)的⾃相关值,φxd(R)=E[x(n)d(n⼀k)]为x(n)与d(n)互相关值。在有些应⽤中,把输⼊信号的采样值分成相同的⼀段(每段称为⼀帧),再求出R,P的估计值得到每帧的最佳权系数。这种⽅法称为块对块⾃适应算法。如语⾳信号的线性预

测编码LPC就是把语⾳信号分成帧进⾏处理的。R,P的计算,要求出期望值E,在现实运算中不容易实现,为此可通过下式进⾏估计:

⽤以上⽅法获得最佳W*的运算量很⼤,对于⼀些在线或实时应⽤的场合,⽆法满⾜其时间要求。⼤多数场合使⽤迭代算法,对每次采样值就求出较佳权系数,称为采样值对采样值迭代算法。迭代算法可以避免复杂的R-1和P的运算,⼜能实时求得近似解,因⽽切实可⾏。LMS算法是以最快下降法为原则的迭代算法,即W(n+1)⽮量是W(n)⽮量按均⽅误差性能平⾯的负斜率⼤⼩调节相应⼀个增量:W(n+1)=W(n)-µ▽(n),这个“是由系统稳定性和迭代运算收敛速度决定的⾃适应步长。▽(n)为n次迭代的梯度。对于LMS算法▽(n)为下式E[e2(n)]的斜率:

由上式产⽣了求解最佳权系数W*的两种⽅法,⼀种是最陡梯度法。其思路为:设计初始权系数W(0),⽤W(n+1)=W(n)⼀µ▽(n)迭代公式计算,到W(n+1)与W(n)误差⼩于规定范围。其中▽(n)计算可⽤估计值表达式:

上式K取值应⾜够⼤。如果⽤瞬时⼀2e(n)X(n)来代替上⾯对-2E[e(n)X(n)]的估计运算,就产⽣了另⼀种算法——随机梯度法,即Widrow-Hoft的LMS算法。此时迭代公式为:W(n+1)=W(n)+2ue(n)X(n)

以后讨论的LMS算法都是基于WidrOW-Hoff的LMS算法。上式的迭代公式假定滤波器结构为横向结构。对于对称横向型结构也可推出类似的迭代公式:W(n+1)=W(n)+2ue(n)[X(n)+X(n⼀N+1)]三.MATLAB仿真源程序1.LMS算法

function [yn,W,en]=LMS(xn,dn,M,mu,itr)% LMS(Least Mean Squre)算法% 输⼊参数:

% xn 输⼊的信号序列(列向量)% dn 所期望的响应序列(列向量)% M 滤波器的阶数(标量)

% mu 收敛因⼦(步长) (标量) 要求⼤于0,⼩于xn的相关矩阵最⼤特征值的倒数% itr 迭代次数(标量) 默认为xn的长度,M% 输出参数:

% W 滤波器的权值矩阵(矩阵)% ⼤⼩为M x itr,

% en 误差序列(itr x 1) (列向量)% yn 实际输出序列(列向量)% 参数个数必须为4个或5个

if nargin == 4 % 4个时递归迭代的次数为xn的长度itr = length(xn);

elseif nargin == 5 % 5个时满⾜Mif itr>length(xn) | itr

error('迭代次数过⼤或过⼩!');endelse

error('请检查输⼊参数的个数!');end

% 初始化参数

en = zeros(itr,1); % 误差序列,en(k)表⽰第k次迭代时预期输出与实际输⼊的误差W = zeros(M,itr); % 每⼀⾏代表⼀个加权参量,每⼀列代表-次迭代,初始为0% 迭代计算

for k = M:itr % 第k次迭代

x = xn(k:-1:k-M+1); % 滤波器M个抽头的输⼊y = W(:,k-1).' * x; % 滤波器的输出en(k) = dn(k) - y ; % 第k次迭代的误差% 滤波器权值计算的迭代式W(:,k) = W(:,k-1) + 2*mu*en(k)*x;end

% 求最优时滤波器的输出序列yn = inf * ones(size(xn));for k = M:length(xn)x = xn(k:-1:k-M+1);yn(k) = W(:,end).'* x;end

2.调⽤LMS算法%function main()close all

% 周期信号的产⽣t=0:99;

xs=10*sin(0.5*t);

figure;subplot(2,1,1);plot(t,xs);grid;ylabel('幅值');

title('{输⼊周期性信号}');% 噪声信号的产⽣

randn('state',sum(100*clock));xn=randn(1,100);subplot(2,1,2);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('{随机噪声信号}');% 信号滤波xn = xs+xn;

xn = xn.' ; % 输⼊信号序列dn = xs.' ; % 预期结果序列M = 20 ; % 滤波器的阶数

rho_max = max(eig(xn*xn.')); % 输⼊信号相关矩阵的最⼤特征值mu = rand()*(1/rho_max) ; % 收敛因⼦0 < mu < 1/rho[yn,W,en] = LMS(xn,dn,M,mu);% 绘制滤波器输⼊信号figure;subplot(2,1,1);plot(t,xn);grid;ylabel('幅值');xlabel('时间');

title('{滤波器输⼊信号}');% 绘制⾃适应滤波器输出信号subplot(2,1,2);plot(t,yn);grid;ylabel('幅值');xlabel('时间');

title('{⾃适应滤波器输出信号}');

% 绘制⾃适应滤波器输出信号,预期输出信号和两者的误差figureplot(t,yn,'b',t,dn,'g',t,dn-yn,'r');grid;

legend('⾃适应滤波器输出','预期输出','误差');ylabel('幅值');xlabel('时间');title('{⾃适应滤波器}');3.运⾏结果

因篇幅问题不能全部显示,请点此查看更多更全内容