系统识别框图


这是系统识别的一般框图

LMS算法下系统识别信号模型


h(n)为未知系统的冲激响应,d(n)为我们可以接收到的信号也即期望信号,wn为自适应滤波器的系数,e(n)为每次计算的误差。
我们的目标就是让wn与hn尽可能相等。

LMS算法介绍

算法流程:

其中步长要满足以下条件,即步长存在一个最大值,若超过这个最大值算法则不会收敛。

N为自适应滤波器的长度,x(n)为输入信号。

matlab实现

仿真条件:
x(n)是方差为1,均值为0的服从高斯分布的随机信号
h(n)为未知系统的系统响应,由5阶FIR低通滤波器模拟
令自适应滤波器长度为N=13

clc;
clear all;
% 本程序利用LMS算法实现系统识别
% 即从接收到的信号得到未知系统的hn% 自适应滤波器长度N=13;
N=13;% 信号x(n)是方差为1,即能量为1,均值为0的服从高斯分布的随机信号
% 发送的信号长度
% 信号长度一般为迭代次数
sig_length=10000;
xn=randn(1,sig_length);
% stem(xn,'r.','MarkerSize',20)
% title('信号x(n)');% 收敛的最大步长
miu_max=2/(N*cov(xn));
% 定义迭代步长
miu=0.1;% h(n)由5阶低通模拟滤波器模拟
hn=[0.028  0.053 0.071  0.053 0.028];
size_hn=size(hn);
% 对h(n)进行补0,使得长度与wn相同,方便最后与wn进行比较
hn_0=[hn,zeros(1,N-size_hn(2))];
% 滤波器的幅频、相频响应
% freqz(hn);% 初始化wn
wn=zeros(1,N);
% 信号经过未知系统后的输出
dn=conv(xn,hn);
% dn=filter(hn,1,xn); %结果与卷积一样yn=[];
en=[];
% 迭代更新过程
for i=N:sig_length
%     每次进入自适应滤波器的输入信号,长度为自适应滤波器的阶数
% 根据算法输入应该是倒序的,即为[x(n),x(n-1)……,x(n-N+1)
% 这样倒序输入,相当于卷积的翻转操作x=xn(i:-1:i-N+1);
%    计算自适应滤波器的输出值,即输出信号与滤波器系数相乘y=wn*x';
%    计算误差
% 注意这里与期望信号的对应,期望信号是通过卷积得到的,但是自适应滤波器的输出是通过相乘
% 因此二者之间存在对齐问题,dn的前N-1个数据是不对的,从第N个开始与自适应滤波器的结果相对应
% 其中N为hn的阶数en(i)=dn(i)-y;
%    系数迭代更新wn=wn+miu*x*en(i);
endfigure(1)
subplot(2,2,1)
% 画出补0后的hn
stem(hn_0,'r.','MarkerSize',10);
title('hn');
subplot(2,2,2)
% 画出计算得到的自适应滤波器系数
stem(wn,'b.','MarkerSize',10);
title('wn');
subplot(2,2,3)
stem(hn_0-wn,'b.','MarkerSize',10);
title('hn-wn');
subplot(2,2,4)
plot(10*log10(en.^2));
xlabel('迭代次数');
ylabel('dB');
title('error curve');

LMS算法实现系统识别相关推荐

  1. 基于最小均值 (LMF) 和最小均方 (LMS) 算法进行系统识别附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  2. matlab信道均衡,使用LMS算法做信道均衡时,更换信道传递函数效果很差

    clear; clc; % 1.产生长度为2000的0/1随机序列,进行BPSK调制,通过冲激响应为h[1,0.8,0.3]的信道传送,信道的高斯噪声为20dB. %用LMS算法进行均衡输出,均衡抽头 ...

  3. matlab 高斯迭代代码_主动降噪与双麦降噪原理与实现前篇——LMS算法的matlab实现...

    LMS算法作为主动降噪与双麦降噪的基础算法,还是非常重要的,这里不多说原理了,后面我慢慢更这一部分. 直接上代码,建议感兴趣的朋友先看看原理再看代码: clear

  4. matlab blms算法程序,LMS算法Matlab程序

    LMS滤波器MATLAB函数 function [yn,W,en]=LMSPrediction(xn,M,mu,k) % LMS(Least Mean Squre)算法 % 输入参数: % xn 输入 ...

  5. lms算法的verilog实现_基于FPGA和LMS算法的系统建模

    © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.    http://www.c ...

  6. matlab中lms m,LMS算法仿真(Matlab)

    程序1:基本LMS算法 % 该程序实现时域LMS算法,并用统计的方法仿真得出不同步长下的收敛曲线 clear % 清空变量空间 g=100; % 统计仿真次数为g N=1024; % 输入信号抽样点数 ...

  7. C语言LMS双麦克风消噪算法,基于两个时域LMS算法双麦克风系统分析.doc

    基于两个时域LMS算法双麦克风系统分析 基于两个时域LMS算法双麦克风系统分析 [摘要] 本文介绍了基于两个时域LMS算法的双麦克风系统结构以及性能分析.本文提出一种采用两个时域LMS的算法,并将此算 ...

  8. 4)自适应滤波(一)[LMS算法]

    目录 一.LMS算法 1.滤波器--改变信号频谱 模拟滤波器: 数字滤波器: 2.自适应滤波器简介 自适应滤波器: 非自适应滤波器: 自适应滤波器应用: 自适应滤波场景: 自适应滤波处理逻辑(处理非平 ...

  9. 基于LMS算法的DFE判决反馈均衡器

    基于LMS算法的DFE判决反馈均衡器 DFE原理 DFE(decision feedback equalization )判决反馈均衡器.它是一种非线性均衡器,由前馈滤波器和反馈滤波器组成,前馈部分可 ...

最新文章

  1. 什么时候使用webservice1
  2. Kafka使用遇到的坑
  3. 12、MyISAM存储引擎
  4. wuhan2020开源项目协作流程发布 征集专家人士
  5. CodeForces - 1335F Robots on a Grid(拓扑找环+反向dfs/倍增)
  6. cultureinfo 类 java_System.Globalization.CultureInfo.cs(示例代码)
  7. php模板意思,php中的 是什么意思
  8. 10 WM配置-主数据-定义仓位类型(Bin Type)
  9. 期末计算机课总结100字,学期总结:学期总结100字
  10. 软件工程基础 实验1《可行性研究与项目计划》
  11. cass软件yy命令_CASS快捷命令大全
  12. 多道程序设计有哪些新特性呢?它又是如何实现程序的并发执行的呢?
  13. php c语言扩展名,c语言源程序的扩展名是什么
  14. loss 加权_为每个类别/实例编写自定义损失加权,对,的,loss
  15. 甘肃省天水市计算机培训班,甘肃天水秦州区文化馆举办首期天水传统菜培训班...
  16. Springboot项目架构设计
  17. deepstream6.1-YOLOv5部署
  18. 计算机cmd如何设置路由,Windows 系统cmd设置添加静态路由方式
  19. 基于cocos2dx的横版动作游戏制作(二)
  20. 模拟信号或数字(4-20MA或485)转PWM频率可选、可达5A

热门文章

  1. 23款网盘全都能变成本地硬盘
  2. #章节四:input()函数
  3. ebs查看服务状态_监控您的卷状态 - Amazon Elastic Compute Cloud
  4. python的rs232通信_RS-232与Python的通信返回Gibberish
  5. python 监听键盘输入并收集数据进行分析
  6. 2-eggs-100-floors-puzzle(扔两个鸡蛋问题)
  7. 数据结构-连续线段-C语言-[输入n条线段各个端点坐标,求包含最多线段的连续线段]
  8. 再来学习一下RT-Thread的软件架构 | 文末赠书5本《软件架构实践》
  9. Android学习之登陆界面设计(一)前后期准备以及相关配置
  10. 2011年北邮各组组线