Matlab2019b中配置最小均方误差滤波器(dsp.LMSFilter)详细设置

主动降噪设计中涉及的最小均方误差算法(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算法以及衍生算法。

你可能感兴趣的:(学习笔记,matlab,声学)