Matlab2019b中配置最小均方误差滤波器(dsp.LMSFilter)详细设置-程序员宅基地

技术标签: matlab  学习笔记  声学  

主动降噪设计中涉及的最小均方误差算法(LMS)2019b版本中AudioToolbox添加的新功能设置

注意:本程序与2016b版本以前不兼容

主动降噪设计中最核心的算法莫过于LMS了,实在是太经典了,目前主流的多为LMS算法演化。后面会介绍LMS function的编写,在这里仅介绍如何快速的建立LMS滤波器并进行仿真设计。

%% Least mean square filter 自适应滤波器工具箱初始化设置
%2020/3/16

lms = dsp.LMSFilter
%% 基本设置
lms.Method='Normalized LMS';%使用方法为普通LMS,(Normalized LMS ; Sign-Data LMS ; Sign-Error LMS ; Sign-Sign LMS)
lms.Length=16;%使用的FIR滤波器长度L,抽头数
lms.StepSizeSource='Property';%'Property'为固定步长方式,如果使用设定步长方式为'Input port'
lms.StepSize=0.1;%步长mu大小,需要为一个非负的标量,可以使用'maxstep'方式来获取最大步长,此方式仅在'Property'模式下激活

%[mumax,mumaxmse] = maxstep(lmsFilt,x);%获取最大步长的方式
lms.LeakageFactor=1;%泄露因子,当值为1是普通LMS,不含有泄露参数,当值在[0,1]之间时为泄露LMS
lms.InitialConditions=[1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 ];%初始权值w设置,长度需要和Length一致,0是初始权值全为0

Flag_updates_weight=lms.AdaptInputPort;%滤波器权值w是否持续更新的标志,当为'true'时,权值在输入值为0时保持原来的值
Flag_Reset_weight=lms.WeightsResetInputPort;%权值w是否复位则标志,当为'true'时,复位控制激活,同时weightsResetCondition可用,复位的权值w根据weightsResetCondition的设置

lms.WeightsResetCondition='Non-zero';%触发权值复位w的条件,上升沿触发'Rising edge', 下降沿触发‘Falling edge'
lms.WeightsOutput='Last'; %输出最后一帧数据计算出来的权值,'All'输出全部权值

%% 定点运算设置
lms.RoundingMethod='Floor';%定点化操作
lms.OverflowAction='Wrap';%数据溢出操作
lms.StepSizeDataType='Same word length as first input';%步长大小类型

%% 使用方法
% [y,err,wts] = lms(x,d,mu,a,r);%输入信号x,期望信号d,步长mu(当StepSizeSource为Input port形式时激活),
                              %自适应控制系数a(当AdaptInputPort='ture'时激活),复位信号r,信号输出为y,误差函数err,自适应权值wts
%% 最大步长
[mumax,mumaxmse] = maxstep(lms,x);%lms为预设好的最小均方误差滤波器,x为输入信号,当为NLMS时mumax=2,mumin=2

%% 预测最小均方误差的误差信号
[mmseemse,meanw,mse,tracek] = msepred(lms,x,d,m);
%返回值mmse
%最小均方误差,这个参数是用维纳滤波器估计的,是为维纳滤波器输出的信号与期望信号之间的均方误差
%较大的均方误差表明自适应滤波器不能准确的跟踪期望信号,最小的均方误差表征了自适应滤波器是最优的。
%将期望信号的特定帧与滤波后的信号之间的最小均方误差计算为两帧信号之间的方差。
%msepred函数输出所有帧的mmse值的平均值。

%返回值emse
%该误差是自适应滤波器引入的均方误差与相应维纳滤波器产生的最小均方误差之差。

%meanw
%系数向量序列表示自适应滤波器在各时刻的瞬时值,以矩阵形式返回。
%该矩阵的列包含LMS自适应滤波系数在每一时刻的平均值的预测。如果抽取因子m = 1,均值的维数为m×n。M是输入信号的帧大小(行数),
%x. N是FIR滤波器权向量的长度,由lmsFilt系统对象的length属性指定。如果m > 1,均值的维数为m /m×n。

%tracek
%预测LMS自适应滤波器在每一时刻的总系数误差功率,以列向量的形式返回。
%这些值由系数协方差矩阵的迹给出。协方差可以用来衡量两个变量间的相似性.

Copyright  2020 by RichardYang. All rights reserved.
仅供参考,严禁转载,感谢。

如果你需要更加详细的了解每个参数的意义,可以关注我的博客,之后将会详细的写一写主动降噪中的LMS算法以及衍生算法。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011442170/article/details/105577186

智能推荐

python中列表(list)和元组(tuple)该如何抉择?有什么区别?_(判断题, 2分) python的列表类型比元组类型更灵活。-程序员宅基地

文章浏览阅读1.1k次。元组就好像你用钢笔写下的字,写上就不能擦掉了,除非换一张纸重写了,而列表就像是铅笔写下的字,写错了还可以擦掉更改。_(判断题, 2分) python的列表类型比元组类型更灵活。

floyd算法_/floyd算法-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏4次。floydfloyd算法解决的问题是在图中找到从i号结点到j号结点最短路径值(边的权值)的问题,核心代码就下面四行for(int k = 0;k < n;k++) for(int i = 0;i < n;i++) for(int j = 0;j < n;j++) dp[i][j] = Math.min(dp[i][j],dp[i..._/floyd算法

R语言 |一些常用的数据整理的技巧(二)-程序员宅基地

文章浏览阅读265次,点赞4次,收藏2次。参考:https://blog.csdn.net/kunxitoothache/article/details/109897918。假设上述文件的名称为test.pbs。主要要注意的是“peak”NR的应用;

pytorch版本回退解决No Module named 'torch.legacy'_torch.legacy'安装-程序员宅基地

文章浏览阅读1.1w次。版本回退主要是为了解决新版本的pytorch往往会舍弃一些过去会用到的类与接口,比如torch.legacy等在torch1.0.1版本中是被舍弃了,无法正常使用的,而在0.4.1中是仍然保存的。一、Conda降级pytorch版本或安装指定版本pytorch如果你是使用conda包管理,你可以很容易实现版本降级,你只需要指定版本即可:# 比如你想降级到以前的v0.4.1版本c..._torch.legacy'安装

MyISAM,Memory,InnoDB-程序员宅基地

文章浏览阅读71次。MyISAM:表锁:表级锁。注意不要让它成为瓶颈不支持自动数据恢复:服务器崩溃或停电后,就应该在使用之前检查和执行可能的修复。不支持事务:实际上,MyISAM甚至不保证单个命令会完成。如果在多行UPDATE的中途有错误发生,一些行会被更新,而另外一些则不会。只有索引被缓存在内存中:MyISAM中缓存了MYSQL进程内部的索引,并保存在键缓冲区。操作系统缓存了表的数据,因此在MYSQ..._myisam、memory,

nginx的location和proxy_pass正则-程序员宅基地

文章浏览阅读2.1k次。location里的正测表达式,是怎么匹配到proxy_pass上的比如 [code="java"]//配置Alocation ~* /image/ { proxy_pass http://192.168.1.1/}[/code][code="java"]//配置Blocation ~* /image/ { ..._nginx location proxy_pass 使用正则

随便推点

IDEA安装Lombok插件失败的解决方案_fail to load plugin descriptor from file lombok.ja-程序员宅基地

文章浏览阅读1.4w次。报错问题一般就是网络问题或者是RP问题。插件下载地址:1和2都可以 ,2 的速度稍微快点1.http://plugins.jetbrains.com/plugin/6317-lombok-plugin2.https://github.com/mplushnikov/lombok-intellij-plugin/releases选择下载的插件版本号要和自己的IDE版本对应。..._fail to load plugin descriptor from file lombok.jar

spark-submit 命令使用详解-程序员宅基地

文章浏览阅读2w次,点赞2次,收藏35次。spark-submit 命令使用详解spark-submit 用户打包 Spark 应用程序并部署到 Spark 支持的集群管理气上,命令语法如下:spark-submit [options] <python file> [app arguments]app arguments 是传递给应用程序的参数,常用的命令行参数如下所示:–master: 设置主节点 URL 的参数..._spark-submit

RecastNavigation(3D场景建模、网格导航)-程序员宅基地

文章浏览阅读928次。一、RecastNavigation详解  RecastNavigation定义:    RecastNavigation是一个导航寻路工具集,使用邻接的凸多边形集合描述一个3D场景,A*寻路算法使3D场景的可达性得到保证。    Polygon是Detour的基本寻路单元,在Poly(Polygon凸多边形)中,任意两个点是可以直线到达的。    github:https://gi..._recastnavigation

java.sql.SQLException: ${jdbc.driver}-程序员宅基地

文章浏览阅读1.4k次。一直显示读不到文件,后来发现是忘记加这句话了<bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource">加到访问数据库的代码前面 <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <bean id="myDataSource_java.sql.sqlexception: ${jdbc.driver}

排名(sort结构体)_今天的上机考试虽然有实时的ranklist,但上面的排名只是根据完成的题数排序,没有考-程序员宅基地

文章浏览阅读246次。Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的 考生,并将他们的成绩按降序打印。 Input 测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 )、分数_今天的上机考试虽然有实时的ranklist,但上面的排名只是根据完成的题数排序,没有考

19年冬季第二题 PAT甲级 1166 Summit (25分)-程序员宅基地

文章浏览阅读256次。7-3 Summit (25分)A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone.Now given

推荐文章

热门文章

相关标签