使用RLS自适应滤波系统识别
这个例子展示了如何使用一个递归最小二乘(RLS)过滤器来确定一个未知的系统建模与低通滤波器。动态过滤可视化工具是用来比较未知的频率响应和估计系统。这个示例允许您动态地调整关键仿真参数使用用户界面(UI)。示例还显示了如何使用MATLAB编码器™来生成代码的算法,加快其执行的速度。
需要MathWorks™产品:下载188bet金宝搏
DSP系统工具箱™
可选MathWorks产品:下载188bet金宝搏
MATLAB编码器生成C代码的MATLAB仿真
金宝app执行仿真软件仿真软件®版本的例子
介绍
自适应系统辨识是自适应滤波的主要应用之一。这个例子展示了系统识别使用RLS滤波器。例子的工作流程如下图所示:
未知的系统是由一个低通滤波器建模。相同的输入是美联储的冷杉和RLS滤波器。所需的信号是不明的输出系统。RLS滤波器的估计重量因此收敛于冷杉滤波器的系数。RLS滤波器和冷杉滤波器的系数由动态过滤器使用可视化工具来可视化所需的估计和频率响应。学习曲线的RLS滤波器(均方误差(MSE)的情节的过滤器和时间)也可视化。
可调滤波器
在这个例子中使用的低通滤波器建模使用dsp.VariableBandwidthFIRFilter
系统对象。该对象允许您调整滤波器的截止频率,同时保留冷杉结构。调优是通过每个滤波器系数乘以一个因素与当前和预期的截止频率成正比。
MATLAB仿真
HelperRLSFilterSystemIdentificationSim函数包含算法的实现。它实例化,通过算法形成的对象初始化和步骤。
这个函数RLSFilterSystemIDExampleApp包裹在HelperRLSFilterSystemIdentificationSim和迭代调用它,提供连续适应身份不明的冷杉系统。使用dsp.DynamicFilterVisualizer
应用程序也情节如下:
所需的估计和频率转移函数。
RLS滤波器的学习曲线。
绘图时发生“plotResults”输入函数是“真正的”。
执行RLSFilterSystemIDExampleApp运行仿真和绘制结果范围。请注意,模拟运行时,只要用户不明确阻止它。
下面的土地是100年运行上面的仿真时间步的输出:
快速收敛的RLS滤波器对冷杉滤波器可以通过上面的情节。
RLSFilterSystemIDExampleApp启动一个用户界面(UI)设计与仿真。用户界面允许您调整参数和结果立即反映在模拟。例如,移动滑块的截止频率的模拟运行时,增加了数字滤波器的截止频率。同样,移动的滑块RLS遗忘因子的曲调的遗忘因子RLS滤波器。故事情节反映了你的变化调整这些参数。在UI上的更多信息,请参阅HelperCreateParamTuningUI。
界面上也有两个按钮,“重置”按钮重置RLS和FIR滤波器的状态初始值,并停止仿真的仿真结束。如果你调整RLS滤波器的遗忘因子的值太低,你会注意到RLS滤波器不能收敛到期望的解决方案,如预期。你可以恢复收敛首先增加了遗忘因子可以接受的值,然后单击“重置”按钮。使用UI控制仿真或可选的MEX-file(或独立的可执行文件)产生的仿真代码如下详细。如果你有一个MIDI控制器,它可以同步与UI。你可以通过选择一个MIDI控制在打开的对话框中当您右键单击滑块或按钮并从上下文菜单中选择“同步”。然后选择MIDI控制工作按照滑块/按钮,以便操作控制跟踪的另一个。
生成MEX-File
MATLAB编码器可用于生成C代码的函数HelperRLSFilterSystemIdentificationSim。为了生成一个MEX-file平台,执行以下:
currDir = pwd;%保存当前目录的地址目录(pwd) mexDir = [tempdir“RLSFilterSystemIdentificationExampleMEXDir”];%的名字%临时目录如果~存在(mexDir“dir”mkdir (mexDir);%创建临时目录结束cd (mexDir);变化百分比目录ParamStruct = HelperRLSCodeGeneration ();
代码生成成功:查看报告,打开(“codegen /墨西哥人/ HelperRLSFilterSystemIdentificationSim / html / report.mldatx”)
通过调用包装器函数RLSFilterSystemIDExampleApp与“真正的”
作为参数,生成的MEX-fileHelperRLSFilterSystemIdentificationSimMEX
可以代替吗HelperRLSFilterSystemIdentificationSim
的模拟。在这个场景中,UI仍在MATLAB环境中运行,但主要处理算法MEX-file执行。性能改进的前提下在这种模式下优化参数的能力。
点击这里打电话给RLSFilterSystemIDExampleApp
与“真正的”
作为参数使用MEX-file来模拟。再次,模拟运行,直到用户显式地阻止它的UI。
模拟与墨西哥人速度比较
为模拟创造了mex files经常帮助实现更快的运行时。为了测量性能改进,让我们第一次的执行算法在MATLAB没有任何绘图:
清晰的HelperRLSFilterSystemIdentificationSimdisp (“运行MATLAB代码…”)
运行MATLAB代码…
抽搐nTimeSteps = 100;为印第安纳州= 1:nTimeSteps HelperRLSFilterSystemIdentificationSim (ParamStruct);结束tMATLAB = toc;
现在让我们时间运行相应的MEX-file和显示结果:
清晰的HelperRLSFilterSystemIdentificationSimdisp (“运行MEX-File…”)
运行MEX-File……
抽搐为印第安纳州= 1:nTimeSteps HelperRLSFilterSystemIdentificationSimMEX (ParamStruct);结束tMEX = toc;disp (的结果:)
结果:
disp ([的时间运行MATLAB系统对象:num2str (tMATLAB),…“秒”]);
时间运行MATLAB系统对象:7.095秒
disp ([“时间运行MEX-File:”num2str (tMEX),“秒”]);
时间运行MEX-File: 0.96606秒
disp ([“加速的因素”num2str (tMATLAB / tMEX),…“是通过创建MEX-File”]);
加速7.3443倍是通过创建MEX-File
清理生成的文件
之前创建的临时目录中可以删除:
cd (currDir);清晰的HelperRLSFilterSystemIdentificationSimMEX;删除目录(mexDir“年代”);
金宝app仿真软件版本
rlsfiltersystemidentification是一个仿真金宝app软件模型,实现了RLS系统识别的例子强调了在前面的部分。
在这个模型中,低通滤波器建模使用可变带宽滤波器块。级响应执行可视化使用dsp.DynamicFilterVisualizer
。
双击系统识别子系统推出面具设计与仿真软件模型。金宝app您可以调整数字滤波器的截止频率和遗忘因子的RLS滤波器。
模型模拟时生成的代码。因此,它必须执行从一个文件夹的写权限。