**
**

FXLMS主动降噪的Simulink建模与仿真

**
**

最近在研究关于主动降噪的课题,在摸索学习的过程中,分享一些初步学到的知识。

**FXLMS算法是基于LMS算法在次级通道补偿方向上做出的改进算法,我在simulink中对其进行了建模与仿真,希望对一起学习的小伙伴有所帮助。
**
以下是我的仿真图:

其中用2个频率分别为80HZ和110HZ的正弦信号叠加模拟噪音信号,初级通道传递函数为假定值,用滤波器函数来代替。

次级通道传递函数也是用滤波器来假定的值。

而次级通道传递函数估计是对次级通道的估计,实际情况下可以由在线辨识或离线辨识得到,在这里我假定理想状态次级通道估计和次级通道相同。

FXLMS fliter 是用S函数块编写的自适应滤波器,其中有三个输入,两个输出。

输入1:初始噪音信号
输入2:经过次级通道传递函数估计补偿的噪音信号
输入3:噪音抵消后的误差信号,理想状态为0

输出1:经过LMS算法计算权重后的自适应滤波器输出,用来抵消噪音
输出2:LMS算法计算的权重

function test(block)setup(block);
%endfunctionfunction setup(block)%% Register dialog parameter: LMS step size block.NumDialogPrms = 1;block.DialogPrmsTunable = {'Tunable'};% block.DialogPrm(1).Name = 'StepSize';% block.DialogPrm(1).DataTypeId = 0;%% Regieste number of input and output portsblock.NumInputPorts  = 3;block.NumOutputPorts = 2;%% Setup functional port properties to dynamically%% inherited.block.SetPreCompInpPortInfoToDynamic;block.SetPreCompOutPortInfoToDynamic;block.InputPort(1).Complexity   = 'Real'; block.InputPort(1).DataTypeId   = 0;block.InputPort(1).SamplingMode = 'Sample';block.InputPort(1).Dimensions   = 1;block.InputPort(2).Complexity   = 'Real';block.InputPort(2).DataTypeId   = 0;block.InputPort(2).SamplingMode = 'Sample';block.InputPort(2).Dimensions   = 1;block.InputPort(3).Complexity   = 'Real';block.InputPort(3).DataTypeId   = 0;block.InputPort(3).SamplingMode = 'Sample';block.InputPort(3).Dimensions   = 1;block.OutputPort(1).Complexity   = 'Real';block.OutputPort(1).DataTypeId   = 0;block.OutputPort(1).SamplingMode = 'Sample';block.OutputPort(1).Dimensions   = 1;block.OutputPort(2).Complexity   = 'Real';block.OutputPort(2).DataTypeId   = 0;block.OutputPort(2).SamplingMode = 'Sample';block.OutputPort(2).Dimensions   = 1;%% Set the block simStateCompliance to default (i.e., same as a built-in block)block.SimStateCompliance = 'DefaultSimState';%% Register methodsblock.RegBlockMethod('CheckParameters',         @CheckPrms);block.RegBlockMethod('ProcessParameters',       @ProcessPrms);block.RegBlockMethod('PostPropagationSetup',    @DoPostPropSetup);block.RegBlockMethod('Start',                   @Start);  block.RegBlockMethod('WriteRTW',                @WriteRTW);block.RegBlockMethod('Outputs',                 @Outputs);%% Block runs on TLC in accelerator mode.block.SetAccelRunOnTLC(true);%endfunctionfunction CheckPrms(block)mu = block.DialogPrm(1).Data;if mu <= 0 || mu > 1error(message('simdemos:adapt_lms:stepSize'));end%endfunctionfunction DoPostPropSetup(block)%% Setup Dwork  N = 32;                    %% Filter length   block.NumDworks = 3;block.Dwork(1).Name = 'X'; %% u[n],...,u[n-31]block.Dwork(1).Dimensions      = N;block.Dwork(1).DatatypeID      = 0;block.Dwork(1).Complexity      = 'Real';block.Dwork(1).UsedAsDiscState = true;block.Dwork(2).Name = 'H'; %% Filter coefficientsblock.Dwork(2).Dimensions      = N;block.Dwork(2).DatatypeID      = 0;block.Dwork(2).Complexity      = 'Real';block.Dwork(2).UsedAsDiscState = true;block.Dwork(3).Name = 'l'; %% Filter coefficientsblock.Dwork(3).Dimensions      = N;block.Dwork(3).DatatypeID      = 0;block.Dwork(3).Complexity      = 'Real';block.Dwork(3).UsedAsDiscState = true;%% Register all tunable parameters as runtime parameters.block.AutoRegRuntimePrms;%endfunctionfunction ProcessPrms(block)block.AutoUpdateRuntimePrms;%endfunctionfunction Start(block)%% Initialize Dwork block.Dwork(1).Data = zeros(1, 32);block.Dwork(2).Data = zeros(1, 32);block.Dwork(3).Data = zeros(1, 32);%endfunctionfunction Outputs(block)mu = block.RuntimePrm(1).Data;N  = 32;u = block.InputPort(1).Data;e = block.InputPort(3).Data;r = block.InputPort(2).Data;X = block.Dwork(1).Data;H = block.Dwork(2).Data;l = block.Dwork(3).Data;%%%% H^(n+1)[i] = H^(n)[i]+mu*(d(n)-y(n))*u(n-i) %% X(2:N) = X(1:N-1);X(1)   = u;  l(2:N) = l(1:N-1);l(1)   = r;y      = X'*H;    H      = H+mu*e*l;block.Dwork(1).Data = X;block.Dwork(2).Data = H;block.Dwork(3).Data = l;block.OutputPort(1).Data = y;block.OutputPort(2).Data = norm(H);

运行结果:

蓝色为噪音信号,黄色为降噪后信号,可以看到明显的降噪效果。


图为LMS算法计算的权重

同时面临这一个问题,在负反馈时,ERRO误差信号在初始阶段为0,所以在降噪的初始阶段,会呈现不稳定状态,加入延迟模块最初是为了消除代数环,可对初始的误差状态并未起改善作用,希望有人能提出中肯的指点与建议,第一次发文,不妥之处请见谅,谢谢。

FXLMS主动降噪的simulink建模与仿真相关推荐

  1. 永磁同步电机PMSM启动Simulink建模与仿真

    永磁同步电机PMSM启动Simulink建模与仿真 学习完PMSM的基本原理之后,再根据具体的连接原则设计simulink仿真模型:主要包括一个产生三相正弦波的产生源,再两两相加减,再经过两个受控电压 ...

  2. 转载:深入研究simulink建模与仿真之输入端口模块(Inport)的几种不同的图标

    深入研究simulink建模与仿真之输入端口模块(Inport)的几种不同的图标 版权 在临摹学习时,经常会看到demo中的Inport模块有多种不同的形式,现总结一下. 默认图标 从Ports &a ...

  3. 【更新中…】Matlab simulink建模与仿真

    本文为学习笔记,视频来源:https://www.bilibili.com/video/BV1L7411a7uL Matlab simulink建模与仿真 1 初始simulink 1.1 simul ...

  4. 【MASHIII调制器】MASHIII调制器的Simulink建模与仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 这里,基于小数分频的频率合成器,考虑到你需要实现sigma-delta以及mash等结构.因此,系统的模块结构如下图所示: 下面,我们对这个结 ...

  5. 迭代学习控制方式Simulink建模与仿真

    1 什么是迭代学习控制 迭代学习控制(iterative learning control,简称ILC)由Uchiyama于1978年首先提出,不过因为论文由日文撰写,影响不是很大.1984年,Ari ...

  6. 基于arx模型的MPC预测控制器simulink建模与仿真实现

    目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 MPC的优点 模型预测控制善于处理多输入多输出系统        对于MIMO系统,PID需要为每个子系统单独设计PID控制器,由于存在耦 ...

  7. m基于PID控制器的电动车充放电系统的simulink建模与仿真

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 随着全球经济的增长. ...

  8. 双闭环pid matlab仿真,SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真...

    随着电力行业的快速发展,逆变器的应用越来越广泛,逆变器的好坏会直接影响整个系统的逆变性能和带载能力.逆变器的控制目标是提高逆变器输出电压的稳态和动态性能,稳态性能主要是指输出电压的稳态精度和提高带不平 ...

  9. 深入研究simulink建模与仿真之信号线上的几种不同的图标

    先来看看一个简单模型中,信号线上的不同图标: 信号解析图标 信号解析图标是一个蓝色小叉子. 先双击信号线,添加信号标签(信号名称),再打开属性对话框,勾选"Signal name must ...

最新文章

  1. MySQL Workbench 8.0 CE数据库管理基本操作
  2. [转]Sandcastle初探——官方版的NDoc
  3. mongodb索引--1亿条记录的查询从55.7秒到毫秒级别补充版
  4. 4.在master机器上配置环境变量
  5. USACO-Section1.5 Mother's Milk (深度优先搜索)
  6. 诺基亚造平板到底前途几何?
  7. 使用jQuery获取GridView的数据行的数量
  8. 甘特图制作_甘特图是用什么软件制作?
  9. 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
  10. 湖南师范大学计算机网络基础教学平台,基于网络的师徒式教学平台的设计与实现...
  11. 【源码分享】-c++界面源代码分享
  12. sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
  13. php怎样规定密码混合,PHP产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合...
  14. LaTeX 文字对齐
  15. myeclipse如何导入外部jar包
  16. 类似腾讯手机管家应用源码完整版
  17. ggplot2画图教程之Pathway富集分析(气泡图)
  18. codeforces787A-The Monster
  19. 中国单反数码相机市场现状动态及前景规模调查报告2022-2028年版
  20. 【PCB学习笔记】绘制智能车四层板 --- PCB设计规则设置及手工布线

热门文章

  1. 析达芬奇DM644x平台ARM中断处理流程
  2. Autosar AP – 概要
  3. 【Vue】components 组件用法
  4. 7. Components
  5. Power Query (Power BI)傻瓜式合并资产负债表,史上最好用
  6. 【数学建模】CUMCM-2013B 碎纸片的拼接复原 解题思路整理
  7. October 2006
  8. [990]Geohash算法原理及实现
  9. 微软小娜关闭服务器,请问微软小娜 (Cortana) 要退出中国了吗?
  10. 【usb】USB Core功能解析(一)-------linux那些事儿之我是usb