最小均方(LMS, Least Mean Squares)是最基本的自适应滤波算法。
LMS算法是自适应滤波器中常用的一种算法与维纳算法不同的是其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此理论上讲LMS算法的性能在同等条件下要优于维纳。但是LMS是在初始值下逐步调整的,因此在系统稳定前,会有一段调整时间,调整时间受步长因子的控制,一定范围内,步长因子越大,调整时间越小,步长因子的最大取值为R的迹。LMS采用平方误差最小的原则代替均方误差最小的原则,信号基本关系如下:
g=100; % 统计仿真次数为g去
N=1024; % 输入信号抽样点数N
k=128; % 时域抽头LMS算法滤波器阶数
pp=zeros(g,N-k); % 将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均
u=0.0001;
for q=1:g
t=1:N;
a=1;
s=a*sin(0.05*pi*t); % 输入单频信号s
figure(1);
subplot(311)
plot(t,real(s)); % 信号s时域波形
title('信号s时域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,5); % 加入均值为零的高斯白噪声,信噪比为3dB
% 设置初值
y=zeros(1,N); % 输出信号y
y(1:k)=xn(1:k); % 将输入信号xn的前k个值作为输出y的前k个值
w=zeros(1,k); % 设置抽头加权初值
e=zeros(1,N); % 误差信号
% 用LMS算法迭代滤波
for i=(k+1):N
XN=xn((i-k+1):(i));
y(i)=w*XN';
e(i)=s(i)-y(i);
w=w+u*sign(real(e(i)))*XN; %更新抽头系数
end
pp(q,:)=(e(k+1:N)).^2;
end
subplot(312)
plot(t,real(xn)); % 信号s时域波形
title('信号s加噪声后的时域波形');
subplot(313)
plot(t,real(y)); % 信号s时域波形
title('自适应滤波后的输出时域波形');
for b=1:N-k
bi(b)=sum(pp(:,b))/g; % 求误差的统计平均
end
完整代码或者代写添加QQ 1564658423
先看代码 复制代码 代码如下: div style="position:relative; width:[flash的宽]...
详解 Spring注解的(ListMap)特殊注入功能 最近接手一个新项目,已经没有原开发...
CentOS版本:7.6.1810 3台 JDK版本:1.8.0_191 Zookeeper版本:3.4.10 安装包 链接h...
OBJECT ID="agobjOraSession" RUNAT="Server" PROGID="OracleInProcServer.XOraS...
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认...
XML/HTML Code 复制内容到剪贴板 input id = username name = username type = t...
1,父传子 子组件中定义 props 字段,类型为数组(如果需要限制字段值类型,也可...
本文转载自微信公众号「 jinjunzhu」,作者 jinjunzhu 。转载本文请联系 jinjunz...
0x01 Mysql Mysql划分:权限 root 普通用户 版本 mysql5.0 mysql5.0 1.1 root权...
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求...