用LMS算法实现自适应均衡器的MATLAB程序
LMS算法自适应滤波器的MATLAB仿真与DSP实现

据存储器,64k字的程序存储器.具有高度并行性.用DSP特有的汇编语言实现以上3种LMS算法自适应滤波器.在TMS320C54X的指令系统中,单周期乘/累加指令MAC和循环寻址方式可使滤波器在一个周期内完成每个样值的计算.在实现LMS自适应算法时,由于要计算两组数对应项乘积的累加和,还有要采用循环寻址方式,因此,本文滤波器程序中采用DSP指令中的RPTZ和MAC结合循环寻址方式实现两累加和的运算.RPTZA,#F1LTERMAC℃OFF_DP+0%,*DATA_DP+0%,A其中,RPTZ指令用于将累加器A清零,将立即数10(本实验中滤波器阶数取11)装入到重复计数器,使下条MAC指令重复执行10+1次.MAC指令实现将两存储区数据的乘积累加到累加器A,使存储器的指针以循环寻址的方式指向下一个存储区.其中,FILTER,COFF_DP,DATA—DP分别为自适应滤波器的阶数,自适应滤波器系数缓冲区指针和输入样值缓冲区指针.为了提高算法效率,程序中使用了TMS320C54X特有的LMS指令,来快速实现本文的几种自适应滤波器.设计中,采用1500Hz的期望信号与312Hz的噪声信号叠加作为11个系数的自适应滤波器的一个输入信号,对于每一个时刻r/,,计算自适应滤波器的输出,误差信号是输出信号与期望信号的差值.固定步长LMS算法,变步长LMS算法和归一化LMS算法在SZ—EPP5416评估板上实现的结果如图3所示.70(d)归一化LMS算法滤波结果图3DSP实现结果Fig.3TherealizationDSP图3中,横坐标为仿真时间,竖坐标为波形幅值,图3(a)为输入含噪声的叠加信号,图3(b)为固定步长LMS算法滤波器实现结果,从图3(b)中可以看出,在滤波初始阶段,滤波结果不明显,输入的叠加信号经过自适应滤波器后在初始阶段噪声没有得到明显抑制,存在较大稳态误差,收敛速度比较慢,收敛速度和稳态误差都有待改善.图3(c)为变步长LMS算法滤波结果,从图3(c)中可以看出,在滤波初始阶段,稳态误差已得到改善,但仍有较小稳态误差浮动,初始收敛速度有所加快,输入的叠加信号经过自适应滤波器后噪声得到较明显抑制,滤波性能优于固定步长LMS算法.图3(a)为归一化LMS算法滤波结果,从图3(d)中可以看出,在滤波初始阶段,稳态误差已经得到明显改善,稳态误差浮动已经得到改善,输入的叠加信号经过自适应滤波器后噪声得到更明显抑制,更好的克服了固定步长存在的矛盾.可见,此滤波器滤波效果最为明显.4结论初始收敛速度与稳态误差是衡量自适应滤波算法性能优劣的两个重要技术指标,本文通过对固定步长,变步长LMS算法和归一化LMS算法自适应滤波器进行MATLAB仿真与DSP实现,比较滤波结果,证明了归一化LMS算法能够保证具有更快的收敛速度与更小的稳态误差,能有效去除不相关的独立噪声的干扰,克服了固定步长在增大初始收敛速度与减小稳态误差之间存在的矛盾,优化了自适应滤波器的性能,滤波效果明显.参考文献:【l】1ShireenW,LiT.ADSP-Nmedactivepowerfilterforlowvoltagedistributionsystems田.F_如2tricPowersyBtel璐Research,2008,78:1561—1567.【2】吕振肃,熊景松.一种改进的变步长LMS自适应算法【刀.信号处理,2008,24(1):144-146.LvzS,XiongJS.Anovdi呻r--ovedvariablestep-sizeLMS妇riⅡ姗田.SigllalProcessing,2008,24(1):144一146.【3】KukrerO.№caniIIA.Frequency-response-shapedLMSadaptivefilter田.Digitalsil}IalPro∞s*ing,2006,16:855—869.【4】叶永生,余容桂.一种新的自适应最小均方算法及其应用研究【刀.电测与仪表,2008,45(7):19—22.YeYS。
LMS算法MatLab实现

LMS算法MatLab实现LMS算法MatLab实现LMS⾃适应滤波器是使滤波器的输出信号与期望响应之间的误差的均⽅值为最⼩,因此称为最⼩均⽅(LMS)⾃适应滤波器。
其原理及推导见function [yn,W,en]=LMS(xn,dn,M,mu,itr)% LMS(Least Mean Squre)算法% 输⼊参数:% xn 输⼊的信号序列 (列向量)% dn 所期望的响应序列 (列向量)% M 滤波器的阶数 (标量)% mu 收敛因⼦(步长) (标量) 要求⼤于0,⼩于xn的相关矩阵最⼤特征值的倒数% itr 迭代次数 (标量) 默认为xn的长度,M<itr<length(xn)% 输出参数:% W 滤波器的权值矩阵 (矩阵)% ⼤⼩为M x itr,% en 误差序列(itr x 1) (列向量)% yn 实际输出序列 (列向量)% 参数个数必须为4个或5个if nargin == 4 % 4个时递归迭代的次数为xn的长度itr = length(xn);elseif nargin == 5 % 5个时满⾜M<itr<length(xn)if itr>length(xn) | itr<Merror('迭代次数过⼤或过⼩!');endelseerror('请检查输⼊参数的个数!');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;endLMS函数的⼀个实例:%function main()close all% 周期信号的产⽣t=0:99;xs=10*sin(0.5*t);figure;subplot(2,1,1);plot(t,xs);grid;ylabel('幅值');title('it{输⼊周期性信号}');% 噪声信号的产⽣randn('state',sum(100*clock));xn=randn(1,100);subplot(2,1,2);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('it{随机噪声信号}');% 信号滤波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('it{滤波器输⼊信号}');% 绘制⾃适应滤波器输出信号subplot(2,1,2);plot(t,yn);grid;ylabel('幅值');xlabel('时间');title('it{⾃适应滤波器输出信号}');% 绘制⾃适应滤波器输出信号,预期输出信号和两者的误差figureplot(t,yn,'b',t,dn,'g',t,dn-yn,'r');grid;legend('⾃适应滤波器输出','预期输出','误差');ylabel('幅值');xlabel('时间');title('it{⾃适应滤波器}');运⾏后的结果如下:。
MATLAB环境下ISI信道仿真及自适应均衡器设计程序说明书

MATLAB 环境下ISI 信道仿真及自适应均衡器设计程序说明一、系统模型二、ISI 信道仿真及LSM 算法自适应均衡器原理1、发送端和接收端滤波器的级联和在采样瞬间时的信道可用等效的离散时间FIR 信道滤波器来表示,Xn={0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088},n={-5,-4,…,5}。
2、基于MSE 准则的均衡器抽头系数的自适应算法为:^^1k k k k c c e y +=+∆其中^k c 代表抽头系数向量的估值,∆为迭代过程中的步长参数,k e 为误差信号,k y 代表在瞬时k 包含均衡器中2k+1接收信号值的行向量。
误差信号k e 表示为:k k k e a z =-;k z 为均衡器输出,k a 为已知信号序列。
最初用一已知伪随机序列{k a }在信道上将这个自适应均衡器进行训练。
在解调器端,均衡器用这个已知序列去调整它的系数,一旦初始调节完成,自适应均衡器就从一个训练模式切换到直接判决模式,这时:^k k k e a z =-,式中^k a 是检测器的输出。
为了确保收敛和在慢变化信道中好的跟踪能力,选择步长参数的一种经验公式是15(21)R k P ∆=+ 式中R P 代表接收到的信号加噪声的功率,它可以从接收信号中估计出。
三、仿真结果图四、结论分析从结果图中我们可以看出,在信噪比逐渐增大的过程中,未经均衡器均衡的差错率没有明显改善,可知系统中始终存在码间干扰造成的误码;经均衡器均衡后的差错率则有明显改善。
但我们同时也可以看到在信噪比较低情况下,均衡器均衡之后的误码率并没有明显改善,甚至没有未均衡的差错率低,这主要是因为噪声为随机信号,功率大时对源信号影响较大,而且均衡器不易跟踪;当我们把均衡器的步长调低后,跟踪能力增强,差错率降低。
附源程序代码:main_plot.mclear;clc;echo off;close all;N=10000; %指定信号序列长度info=random_binary(N); %产生二进制信号序列SNR_in_dB=8:1:18; %AWGN信道信噪比for j=1:length(SNR_in_dB)[y,len]=channel(info,SNR_in_dB(j)); %通过既有码间干扰又有白噪声信道numoferr=0; %初始误码统计数for i=len+1:N+len, %从第len个码元开始为真实信号码元if (y(i)<0), %判决译码elsedecis=1;end;if (decis~=info(i-5)), %判断是否误码,统计误码码元个数numoferr=numoferr+1;end;end;Pe(j)=numoferr/N; % 未经均衡器均衡,得到的误码率end;semilogy(SNR_in_dB,Pe,'red*-'); %未经均衡器,误码率结果图hold on;delta_1=0.11; %指定自适应均衡器的步长delta_2=0.09; %指定自适应均衡器的步长for j=1:length(SNR_in_dB)y=channel(info,SNR_in_dB(j)); %通过信道z=lms_equalizer(y,info,delta_1); %通过自适应均衡器,并设置步长为0.11 numoferr=0;for i=1:N,if (z(i)<0),decis=-1;elsedecis=1;end;if (decis~=info(i)),numoferr=numoferr+1;end;end;Pe(j)=numoferr/N; % 经自适应均衡器均衡后,得到的误码率end;semilogy(SNR_in_dB,Pe,'blacko-'); %自适应均衡器均衡之后,误码率结果图hold on;for j=1:length(SNR_in_dB)y=channel(info,SNR_in_dB(j)); %通过信道z=lms_equalizer(y,info,delta_2); %通过自适应均衡器,并设置步长为0.09 numoferr=0;for i=1:N,if (z(i)<0),decis=-1;elsedecis=1;end;numoferr=numoferr+1;end;end;Pe(j)=numoferr/N; % 经自适应均衡器均衡后,得到的误码率end;semilogy(SNR_in_dB,Pe,'blue.-'); %自适应均衡器均衡之后,误码率结果图hold on;xlabel('SNR in dB');ylabel('Pe');title('ISI信道自适应均衡系统仿真');legend('未经均衡器均衡','经自适应均衡器均衡,步长detla=0.11',...'经自适应均衡器均衡,步长detla=0.09');random_binary.m%产生二进制信源随机序列function [info]=random_binary(N)if nargin == 0, %如果没有输入参数,则指定信息序列为10000个码元N=10000;end;for i=1:N,temp=rand;if (temp<0.5),info(i)=-1; % 1/2的概率输出为-1elseinfo(i)=1; % 1/2的概率输出为1endend;channel.m%模拟既有码间干扰又有高斯白噪声的信道function [y,len]=channel(x,snr_in_dB)SNR=exp(snr_in_dB*log(10)/10); %信噪比真值转换sigma=1/sqrt(2*SNR); %高斯白噪声的标准差%指定信道的ISI参数,可以看出此信道质量还是比较差的actual_isi=[0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088];len_actual_isi=(length(actual_isi)-1)/2;len=len_actual_isi;y=conv(actual_isi,x); %信号通过信道,相当于信号序列与信道模型序列作卷积%需要指出,此时码元序列长度变为N+len-1,译码时我们从第len个码元开始到N+len个结束for i=1:2:size(y,2),[noise(i) noise(i+1)]=gngauss(sigma); %产生噪声end;y=y+noise; %叠加噪声gngauss.m%产生高斯白噪声function [gsrv1,gsrv2]=gngauss(m,sgma)if nargin == 0, %如果没有输入实参,则均方为0,标准差为1m=0; sgma=1;elseif nargin == 1, %如果输入实参为1个参数,则标准差为输入实参,均值为0 sgma=m; m=0;end;u=rand;z=sgma*(sqrt(2*log(1/(1-u))));u=rand;gsrv1=m+z*cos(2*pi*u);gsrv2=m+z*sin(2*pi*u);lms_equalizer.m%LSM算法自适应滤波器实现function [z]=lms_equalizer(y,info,delta)estimated_c=[0 0 0 0 0 1 0 0 0 0 0]; %初始抽头系数K=5;for k=1:size(y,2)-2*K,y_k=y(k:k+2*K); %获取码元,一次11个z_k=estimated_c*y_k'; %各抽头系数与码元相乘后求和e_k=info(k)-z_k; %误差估计estimated_c=estimated_c+delta*e_k*y_k; %计算校正抽头系数z(k)=z_k; %均衡后输出的码元序列end;。
基于LMS算法的无线信道自适应均衡器

基于LMS 算法的无线信道自适应均衡器一、 无线衰落信道与码间干扰无线信道容易受到噪声、干扰和其他随时间变化的信道因素的影响。
其中,大尺度传播效应(large-scale propagation effects ),包括路径损耗(path loss )和阴影(shadowing )效应,这类衰落比较容易克服。
而由多径引起的小尺度传播效应(small-scale propagation effects),特别是宽带信道下的频率选择性衰落,将使接收信号产生严重的码间干扰,如果不经处理,将无法得到原始信号的精确还原。
宽带通信系统下,如果信号带宽B 远远大于相干带宽c B ,那么在间隔超过相干带宽的两个频率点上的信道幅度特性近似独立。
根据相干带宽c B 与多径信号时延扩展m T σ 的关系,码元周期1s T B ≈ 远远小于1m T cB σ= 。
因此,信道的频率选择性衰落伴随着接收信号严重的码间干扰。
无线通信系统的设计必须以合适的复杂度解决这一问题。
二、 自适应均衡器大多实用的无线通信系统都采用时域均衡作为对抗ISI 的手段。
由于无线信道是时变的,在设计接收机的时候,通常并不能精确地了解信道的冲激响应,因此,所设计的均衡器应该能根据具体的信道特性进行自适应的调整。
自适应均衡器是由参数可调的数字滤波器和自适应算法两部分组成,如图1所示。
图1:自适应滤波器原理图 由图1可见,输人信号()x n 经过滤波器后输出()y n ,与参考信号()f n 相减,得出误差信号()e n ,然后通过自适应算法调节滤波器系数设置,按照某种算法准则判断误差信号()e n 是否达到最小,重复以上过程,滤波器逐渐掌握了输人信号与噪声规律,通过调节滤波器系数,达到最佳的滤波效果。
参数可调数字滤波器可以是FIR(Finite-duration impulse Response)数字滤波器或IIR(Infinite-duration impulse Response)数字滤波器,也可以是格形数字滤波器。
基于LMS算法的自适应对消器的MATLAB实现

基于LMS算法的自适应对消器的MATLAB实现LMS(Least Mean Squares)算法是一种常用于自适应信号处理领域的算法,用于实现自适应滤波器或者自适应对消器。
本文将介绍基于LMS 算法的自适应对消器的MATLAB实现。
自适应对消器是一种用于消除信号中的干扰或噪声的滤波器,它的系数会随着输入信号的变化而自适应地调整。
LMS算法是一种广泛使用的自适应算法,它通过最小化预测误差的平方来更新滤波器的权值。
该算法适用于非线性系统、时变系统以及参数不确定的系统。
在MATLAB中,我们可以使用以下步骤来实现基于LMS算法的自适应对消器:1.定义输入信号和期望输出信号:```matlabinput_signal = ... % 输入信号desired_output = ... % 期望输出信号```2.初始化自适应对消器的滤波器系数和步长:```matlabfilter_order = ... % 滤波器阶数filter_coefficients = zeros(filter_order, 1); % 滤波器系数初始化为零step_size = ... % 步长```3.对于每个输入样本,计算预测输出和误差,并更新滤波器的系数:```matlabfor k = 1:length(input_signal)%根据当前输入样本计算预测输出predicted_output = filter_coefficients' * input_signal(k,:);%计算当前误差error = desired_output(k) - predicted_output;%更新滤波器系数filter_coefficients = filter_coefficients + step_size * error * input_signal(k,:);end```4.最后```matlabfiltered_signal = filter_coefficients' * new_input_signal;```需要注意的是,LMS算法的性能和收敛速度与步长的选择有很大关系。
基于LMS算法的自适应对消器的MATLAB实现

N = 5; w = ones(N,1); u = 0.0026; y = zeros(length(t),1); for k = N:length(t) y(k) = n1(k-N+1:k)'*w; e(k) = d(k) - y(k); w = w + 2*u*e(k).*n1(k-N+1:k); end
% 滤波器阶数 % 初始பைடு நூலகம்滤波器权值 % 步长因子
% 跟新权值
% 图像化仿真效果 subplot(211),plot(t,x);title('被噪声污染的正弦信号'); subplot(212),plot(t,s,'k',t,e,'g'); % 对消噪声后, 误差信号即为对原始信号的估计 legend('原始正弦信号','自适应滤波后的信号'); axis([0 1 -1 1]);title('滤波效果');
图 1 自适应对消原理图 其中,滤波器的传输函数可以根据某一信号(这里为系统的输出信号)自动 调整,假定 s,n0 , n1 是零均值的平稳随机过程 zj = dj − yj = sj + n0 − yj 输出信号的均方值 E[zj2 ] = E[(dj − yj )2 ] = E[(sj + n0 − yj )2 ] = E sj2 + E[(n0 − yj )2 ] + 2E[sj (n0 − yj )] 由于 s 与n0 ,n1 不相关,因此 s 与yj 也不相关,则 E[zj2 ] = E sj2 + E[(n0 − yj )2 (1-3) (1-2) (1-1)
E sj2 表示信号的功率。由上面的表达式可以看出,要是输出信号只包含有用
基于LMS的自适应滤波器典型应用的MATLAB实现

LM S 算法一般包括滤波过程和自适应过程, 这两个过程一起工作组成一个反馈环。 图 1 中, x ( n) 为输入信号, y ( n ) 为输出信号, d ( n ) 为参 考信号或期望信号 , e( n) 是 d ( n) 与 y ( n) 的误 差信号。 自适 应滤波 器的滤 波系数 受误差 信号 e( n) 控制 , 根据 e( n) 的值和自适应算法自动调 整。 推导如下: 假设 x ( n) 是一长度为 M 的序列, 由图 1 有:
e2 ( n ) =
n= 0
[ d( n) k= 0
h( k ) x ( n
- k ) ] 这个平方误差的和 是这个滤波器系数的 二次函数。 因此 , 对于滤波器系数 { h ( k) } 的 最 小化就会产生一组线性方程。 为了求解这组方程 组, 有很多种算法, L MS 算法是其中的一种。 1. 2 LM S 算法的具体步骤 LM S 算法基本上是一种递推算法, 它用任意
2
选择的{ h( k ) } 的初始值作为开始 , 然后将每一新 的输入样本{ x ( n ) } 输入到这个自适应 FIR 滤波 器, 计算相应的输出 { y ( n ) } , 形成误差信号 e( n) = d ( n) - y ( n ) , 并按方程 h n ( k ) = h n- 1 ( k ) + ! N- 1 更新滤波器系数, 这里 称为步长参数, x ( n - k ) 是输入信号在时间 n 位于滤波器的第 k 个样 本, 而 e( n ) x ( n- k) 是对第 k 个滤波器系数的一 个梯度负值的近似( 估计 ) 。 2 MAT LAB 实现 M AT L AB 有专门的函数 ADAPT L MS 实现自 适应滤波 , ADAP T LM S 函数的用法为 : [ y , e, s ] = ADAPT LM S( x , d , s) 其中 y 为滤波器的输出信号 , x 为滤波器的 输入信号 , d 为期望信号, e 为误差信号, s 为包含 构体 [ y, e, S] = adaptlms( x , d, S) ; % 自适应滤 波 st em ( [ b. ∀ , S. coeffs. ∀ ] ) ; % 画出识 别的 系统和未知系统的参数。 e( n) x ( n - k ) , 0 ! k
lms算法自适应滤波器应用于自适应回声消除matlab基本步骤

lms算法自适应滤波器应用于自适应回声消除matlab基本步骤1.引言1.1 概述LMS算法自适应滤波器应用于自适应回声消除是一种有效的信号处理技术。
在通信系统、音频处理等领域,回声是一个常见的问题,它会导致信号质量下降和通信效果的恶化。
为了解决这个问题,自适应滤波器和LMS算法被广泛采用。
本文旨在介绍LMS算法自适应滤波器在自适应回声消除中的应用,并详细讲解其基本步骤。
首先,我们将对LMS算法和自适应滤波器进行介绍,包括其原理和基本概念。
然后,我们将探讨自适应回声消除的原理,并介绍LMS算法在回声消除中的具体应用。
通过研究本文,读者将了解到LMS算法自适应滤波器的基本原理和应用场景,以及如何利用该算法实现回声消除。
此外,我们还将对LMS算法自适应滤波器的性能进行分析和评价。
最后,我们将对本文进行总结,并展望其在未来的研究和应用中的发展前景。
通过本文的介绍,读者将具备一定的理论基础和实践经验,能够应用LMS算法自适应滤波器解决实际问题,提高信号处理的效果,从而为通信系统和音频处理领域的发展做出贡献。
文章结构部分应该包括对整篇文章的章节和内容进行简要介绍和概述。
以下是文章1.2文章结构部分的一个例子:1.2 文章结构本文主要介绍了LMS算法自适应滤波器在自适应回声消除中的应用,文章共分为以下几个部分:2. 正文2.1 LMS算法在本节中,我们将详细介绍LMS算法的原理和步骤。
我们将解释LMS算法是如何通过迭代过程来逼近系统的输入和输出之间的关系,从而实现滤波器的自适应调整。
2.2 自适应滤波器本节将重点介绍自适应滤波器的原理。
我们将分析自适应滤波器是如何通过反馈机制和参数调整来实现信号滤波的自适应性。
并探讨了自适应滤波器在实际应用中的一些典型场景。
2.3 自适应回声消除在本节中,我们将详细讨论回声消除的原理和技术。
我们将解释回声是如何产生的以及对通信信号产生的影响。
并介绍LMS算法在回声消除中的应用,以解决回声干扰带来的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用LMS算法实现自适应均衡器的MATLAB程序用LMS算法实现自适应均衡器
考虑一个线性自适应均衡器的原理方框图如《现代数字信号处理导论》p.275
自适应均衡器应用示意图。
随机数据产生双极性的随机序列x[n],它随机地取+1
和-1。
随机信号通过一个信道传输,信道性质可由一个三系数FIR滤波器刻画,滤波器系数分别是0.3,0.9,0.3。
在信道输出加入方差为σ平方高斯白噪声,设计一个有11个权系数的FIR结构的自适应均衡器,令均衡器的期望响应为x[n-7],选择几个合理的白噪声方差σ平方(不同信噪比),进行实验。
用LMS算法实现这个自适应均衡器,画出一次实验的误差平方的收敛曲线,给出最后设计滤波器系数。
一次实验的训练序列长度为500。
进行20次独立实验,
画出误差平方的收敛曲线。
给出3个步长值的比较。
1. 仿真结果:
1
2
3
4
用LMS算法设计的自适应均衡器系数
1 2 3 4 5 6 7 8 9 10 11 序
号
0.0383 -0.0480 0.0565 -0.1058 0.2208 -0.5487 1.4546 -0.5681 0.2238 -0.0997 0.0367 20
次
-0.0037 0.0074 -0.0010 -0.0517 0.1667 -0.5112 1.4216 -0.5244 0.1668 -0.0597 0.0164 1
次
结果分析:
观察三个不同步长情况下的平均误差曲线不难看出,步长越小,平均误差越小,但收敛速度越慢,为了好的精度,必然牺牲收敛速度;当降低信噪比时,尽管20次平均仍有好的结果,但单次实验的误差曲线明显增加,这是更大的噪声功率对随机梯度的影响。
5
附程序:
1. LMS法1次实验
% written in 2005.1.13 % written by li**** clear; N=500;
db=20;
sh1=sqrt(10^(-db/10)); u=1;
error_s=zeros(1,N); for loop=1:1
w=0.05*ones(1,11)';
V=sh1*randn(1,N );
K=randn(1,N)-0.5;
x=sign(K);
for n=3:N;
M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);
end
z=M+V;
for n=8:N;
d(n)=x(n-7);
end
a(1)=z(1)^2;
for n=2:11;
a(n)=z(n).^2+a(n-1); end
for n=12:N;
a(n)=z(n).^2-z(n-11)^2+a(n-1);
end
for n=11:N;
z1=[z(n) z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9) z(n-10)]';
y(n)=w'*z1;
e(n)=d(n)-y(n);
w=w+u./(eps+a(n)).*z1.*conj(e(n));
end
error_s=error_s+e.^2; end
w
error_s=error_s./1; n=1:N;
plot(n,error_s);
xlabel('n (当u=1;DB=20时)');
ylabel('e(n)^2');
title('LMS法1次实验误差平方的均值曲线');
6
2.LMS法20次实验
% written in 2005.1.13 % written by li**** clear;
N=500;
db=20;
sh1=sqrt(10^(-db/10)); u=1;
error_s=zeros(1,N); for loop=1:20
w=0.05*ones(1,11)';
V=sh1*randn(1,N );
K=randn(1,N)-0.5;
x=sign(K);
for n=3:N;
M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);
end
z=M+V;
for n=8:N;
d(n)=x(n-7);
end
a(1)=z(1)^2;
for n=2:11;
a(n)=z(n).^2+a(n-1); end
for n=12:N;
a(n)=z(n).^2-z(n-11)^2+a(n-1);
end
for n=11:N;
z1=[z(n) z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9) z(n-10)]';
y(n)=w'*z1;
e(n)=d(n)-y(n);
w=w+u./(eps+a(n)).*z1.*conj(e(n));
end
error_s=error_s+e.^2; end
w
error_s=error_s./20; n=1:N;
plot(n,error_s);
xlabel('n (当u=1;DB=20时)');
ylabel('e(n)^2');
title('LMS法20次实验误差平方的均值曲线');
7。