家伙在simu万博1manbetxlink上

万博1manbetx基于模型的设计

引入系统工具箱

本周,我将与同事Ken Karnofsky合作,介绍MATLAB R2011A的另一个重大变化。

盖伊:肯,这是什么大变化?

肯:在MATLAB R2011A中,不仅代码生成产品更改了。s manbetx 845设计信号s manbetx 845处理算法的产品也已重组。这是视觉摘要正在发生的事情:

MATLAB R2010A中产品名称的变化

盖伊:什么是系统工具箱?

肯:去年,我们在几个障碍物中引入了一项新技术系统对象。系统对象是MATLAB的预定算法,具有以前仅用于模拟用户的功能,例如快速流处理,隐式状态处理,设计选项,例如定点和代码生成支持。万博1manbetx万博1manbetx

使用系统工具箱,您可以设计适合快速模拟,实时原型制作和嵌入式实现的信号处理算法。您为代码生成设计的任何MATLAB算法(包括使用系统对象)都可以在Simulink中使用新的万博1manbetxMATLAB功能块

盖伊:听起来很酷。让我们看看如何使用LMS自适应过滤器识别系统,并以3种不同的方式实现它:

MATLAB脚本

在此示例中,我创建了一个dsp.lmsfilter对象和adsp.digitalfilter目的。然后我使用使用每个对象定义的算法处理数据的方法。在循环中执行第10次步骤类似于在10个时间步中运行Simulink模型。万博1manbetx

%创建自适应过滤对象hlms = dsp.lmsfilter(11,'步长',0.01);%创建要识别的系统... FIR过滤器。hfilt = dsp.digitalfilter('转换功能',,,,fir(所有零)',,,,...'分子',fir1(10,.25));%运行10次过滤器适应的迭代为了i = 1:10%输入系统x = randn(100,1);%我们测量系统的输出,包括噪声d = step(hfilt,x) + 0.01*randn(100,1);%现在让我们运行自适应过滤器[y,〜,w] = step(hlms,x,d);%比较测量和确定的输出diff(i)= sqrt(sum((y-d)。^2));结尾


编写此脚本后,我可以看到使用系统对象的优点。初始化对象后,我要做的就是调用循环中的步骤方法处理数据。步骤方法的实现非常有效,因为它不包含MATLAB功能编程通常所需的相同开销。

如果您的目标是针对嵌入式处理器,则可以使用MATLAB编码器并直接从此算法生成C代码。如果要将此算法集成到simulink模型中...万博1manbetx

MATLAB功能块

使用MATLAB功能块和系统对象,很容易将MATLAB中创建的算法带入Simulink。万博1manbetx要实现相同的自适应过滤器示例,我制作了以下模型:

使用MATLAB功能块中的系统对象实现的自适应LMS过滤器

然后,我在MATLAB功能块中定义FIR滤波器和自适应过滤器。我在模型的第一个时间步骤中初始化系统对象,并将其声明为执着的因此,他们可以在每个时间步骤之间保持状态。

使用MATLAB功能块中的系统对象实现的自适应LMS过滤器

当然,可以将许多系统对象组合在一个MATLAB功能块中,并创建更复杂的组件。

万博1manbetxSimulink块

对于喜欢仅连接块而无需打字代码的用户,请不要担心!系统工具箱包括准备使用Simulink库。万博1manbetxSimulink库中的块在引擎盖下使万博1manbetx用相同的系统对象。对于此示例,这是使用DSP系统工具箱中的块实现我的模型的外观:

使用Simulink块实现的自适应LMS过滤器万博1manbetx

现在轮到你了

您是否要在MATLAB代码中尝试新的系统对象?您是否在模型中使用MATLAB算法?万博1manbetx让我们离开在这里评论

|

注释

要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。