【最小均方(LMS)算法和归一化最小均方(NLMS)算法进行了比较分析】NLMS比LMS更能抵抗输入相关性研究(Matlab代码实现)

本文比较了最小均方(LMS)和归一化最小均方(NLMS)算法在处理输入相关性信号时的性能,通过理论分析和数值实验揭示NLMS对输入相关性矩阵特征值变化的不敏感性。Matlab代码可供下载。
摘要由CSDN通过智能技术生成

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文章下载


💥1 概述

摘要:
在本文中,我们对最小均方(LMS)算法和归一化最小均方(NLMS)算法进行了比较分析。我们使用输入矩阵矩阵进行比较,因为这两种算法的均方行为取决于输入矩阵矩阵。首先,我们推导了NLMS的输入矩阵矩阵的闭式表达式。其次,我们对LMS和NLMS的输入矩阵矩阵进行了数值和理论比较。分析表明,NLMS的性能对于输入相关性矩阵的特征值分布变化不太敏感,而LMS则相反。

自适应滤波器在信号处理的各个领域中都有广泛应用,例如均衡、噪声消除、线性预测和系统识别[1]–​[3]。最小均方(LMS)[4]是最简单且最常用的自适应算法。然而,LMS的收敛属性取决于输入相关性,对于高度相关的信号(如语音),其收敛速度较慢。其“归一化”版本,即归一化最小均方(NLMS)[5],由于进行了输入归一化,对输入相关性的敏感度较低。尽管已经有几次尝试解释NLMS何时以及为什么比LMS表现更好[1],[3],[6]–​[18],但并没有提供精确的数学理论依据。本文旨在证明为什么NLMS比LMS更能适应输入相关性。我们通过利用事实,即两种算法(即LMS和NLMS)的均方性能由输入矩阵矩阵描述(在(4)和(5)中进一步给出)。具体而言,我们采取两种方法:

一种是经验方法:我们比较两组输入矩阵矩阵的条目对于输入相关性矩阵的特征值的随机扰动的敏感性,从而得出闭合形式的评估。

另一种是理论方法:我们分析两组输入矩阵矩阵的条目的范围随着输入相关性矩阵特征值范围的变化。

详细文章见第4部分。

📚2 运行结果

部分代码:

figure,p1=plot(cdf_ANall,0.01:0.01:1,'Color','k','LineWidth',2,'LineStyle','-');hold on;
p2=plot(cdf_ALall,0.01:0.01:1,'Color','r','LineWidth',2,'LineStyle','--');hold on;
le=legend('${\bf A}_{\mathrm{N}}(k,k)$','${\bf A}_{\mathrm{L}}(k,k)$');le.Interpreter='latex';le.Location='southeast';le.FontSize=14;
xlabel('$x$','Interpreter','latex','FontSize',14);
ylabel('$F(x)$','Interpreter','latex','FontSize',14);
grid on
box off
%
set(gca,'TickLabelInterpreter','latex')
set(gca,'FontSize',14)
%
y_min=0;
y_max=1;
x_min=0;
x_max=max(AL_all(:));
% Calculations for y
y_range=y_max-y_min;
y_range_extended=y_range*(1+looseness/100);
y_mean=(y_max - y_min) /2;
%
y_min_new=y_mean - y_range_extended/2;
y_max_new=y_mean + y_range_extended/2;
%
% Calculations for x
x_range=x_max-x_min;
x_range_extended=x_range*(1+looseness/100);
x_mean=(x_max - x_min) /2;
%
x_min_new=x_mean - x_range_extended/2;
x_max_new=x_mean + x_range_extended/2;

axis([x_min_new x_max_new y_min_new y_max_new])
%
% export_string=sprintf('Acdf');
% export_fig(export_string,'-pdf','-transparent')
%
savefig('/results/Acdf')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plot of all values together for B
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
cdf_BNdiagall=percentile(BN_diag_all(:),0.01:0.01:1);
cdf_BLdiagall=percentile(BL_diag_all(:),0.01:0.01:1);
%
cdf_BNnondiagall=percentile(BN_nondiag_all(:),0.01:0.01:1);
cdf_BLnondiagall=percentile(BL_nondiag_all(:),0.01:0.01:1);
%
figure,p1=plot(cdf_BNdiagall,0.01:0.01:1,'Color','k','LineWidth',2,'LineStyle','-');hold on;
p2=plot(cdf_BLdiagall,0.01:0.01:1,'Color','r','LineWidth',2,'LineStyle','--');hold on;
p3=plot(cdf_BNnondiagall,0.01:0.01:1,'Color','k','LineWidth',2,'LineStyle','-.');hold on;
p4=plot(cdf_BLnondiagall,0.01:0.01:1,'Color','r','LineWidth',2,'LineStyle',':');hold on;
le=legend('${\bf B}_{\mathrm{N}}(k,k)$','${\bf B}_{\mathrm{L}}(k,k)$','${\bf B}_{\mathrm{N}}(k,\bar k)$','${\bf B}_{\mathrm{L}}(k,\bar k)$');le.Interpreter='latex';le.Location='southeast';le.FontSize=14;
xlabel('$x$','Interpreter','latex','FontSize',14);
ylabel('$F(x)$','Interpreter','latex','FontSize',14);
grid on
box off
%
set(gca,'TickLabelInterpreter','latex')
set(gca,'FontSize',14)
%
y_min=0;
y_max=1;
x_min=0;
x_max=max(BL_diag_all(:));
% Calculations for y
y_range=y_max-y_min;
y_range_extended=y_range*(1+looseness/100);
y_mean=(y_max - y_min) /2;
%
y_min_new=y_mean - y_range_extended/2;
y_max_new=y_mean + y_range_extended/2;
%
% Calculations for x
x_range=x_max-x_min;
x_range_extended=x_range*(1+looseness/100);
x_mean=(x_max - x_min) /2;
%
x_min_new=x_mean - x_range_extended/2;
x_max_new=x_mean + x_range_extended/2;

axis([x_min_new x_max_new y_min_new y_max_new])
%
% export_string=sprintf('Bcdf');
% export_fig(export_string,'-pdf','-transparent')
%
savefig('/results/Bcdf')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plot of all values together for B
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cdf_CNall=percentile(CN_all(:),0.01:0.01:1);
cdf_CLall=percentile(CL_all(:),0.01:0.01:1);
%
figure,p1=plot(cdf_CNall,0.01:0.01:1,'Color','k','LineWidth',2,'LineStyle','-');hold on;
p2=plot(cdf_CLall,0.01:0.01:1,'Color','r','LineWidth',2,'LineStyle','--');hold on;
le=legend('${\bf C}_{\mathrm{N}}(k,k)$','${\bf C}_{\mathrm{L}}(k,k)$');le.Interpreter='latex';le.Location='southeast';le.FontSize=14;
xlabel('$x$','Interpreter','latex','FontSize',14);
ylabel('$F(x)$','Interpreter','latex','FontSize',14);
grid on
box off
%
set(gca,'TickLabelInterpreter','latex')
set(gca,'FontSize',14)
%
y_min=0;
y_max=1;
x_min=0;
x_max=max(CL_all(:));
% Calculations for y
y_range=y_max-y_min;
y_range_extended=y_range*(1+looseness/100);
y_mean=(y_max - y_min) /2;
%
y_min_new=y_mean - y_range_extended/2;
y_max_new=y_mean + y_range_extended/2;
%
% Calculations for x
x_range=x_max-x_min;
x_range_extended=x_range*(1+looseness/100);
x_mean=(x_max - x_min) /2;
%
x_min_new=x_mean - x_range_extended/2;
x_max_new=x_mean + x_range_extended/2;

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]Anum Ali, Muhammad Moinuddin , Tareq Y. Al-Naffouri

🌈4 Matlab代码、文章下载

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值