Simulink中embedded MATLAB函数的使用详解

4星 · 超过85%的资源 需积分: 37 24 下载量 150 浏览量 更新于2024-09-13 收藏 28KB DOCX 举报
"对embedded matlab function的使用中文说明" 嵌入式MATLAB功能(Embedded MATLAB Function)是MATLAB Simulink环境中的一种模块,允许用户在Simulink模型中直接使用MATLAB代码来实现自定义的功能。这一特性使得用户可以利用MATLAB的强大计算能力,同时结合Simulink的系统级建模优势。在MATLAB 2010版本中,这一功能得到了广泛的应用。 一、嵌入式MATLAB功能简介 Embedded MATLAB Function模块位于Simulink的“User-Defined Functions”库中,它允许用户编写MATLAB代码,这些代码会在运行时被编译成高效的目标代码。这个功能使用的是一种受限的MATLAB子集,称为embedded MATLAB subset。不在这个子集内的函数需要通过`eml.extrinsic`声明或者使用`feval`函数来调用。这样的设计是为了确保代码能够在Simulink环境中高效执行。 二、使用嵌入式MATLAB功能的简单示例 以下是一个简单的例子,展示了如何使用Embedded MATLAB Function模块计算输入数据的均值和标准差。在这个例子中,Constant模块提供了输入数据[2345]。 代码如下: ```matlab function[mean,stdev]=stats(vals) %#eml % 计算输入值的统计平均值和标准差。 eml.extrinsic('plot'); len=length(vals); mean=avg(vals,len); stdev=sqrt(sum(((vals-mean).^2))/len); plot(vals,'-+'); function mean=avg(array,size) mean=sum(array)/size; ``` 1. 函数定义 函数`stats`接受一个输入参数`vals`,并返回两个输出`mean`和`stdev`。在Simulink模型中,这些输入和输出会直接显示在模块的接口上,方便与其他模块连接。 2. 编译指令 `%#eml`是编译指令,指示Simulink编译器将这段代码按照embedded MATLAB subset的规则处理。这有助于确保代码按照预期的方式编译和执行。 三、代码解释 1. 输入和输出 函数`stats`的定义部分明确了输入和输出。`mean`和`stdev`是计算结果,`vals`是输入数据。在Simulink模型中,你可以直接看到这些接口,便于与其他模块连接。 2. `eml.extrinsic`声明 `eml.extrinsic('plot')`用于声明外部函数`plot`,因为`plot`不在embedded MATLAB subset内。这样声明后,Simulink知道在运行时需要调用MATLAB引擎来执行`plot`函数。 3. 内部函数 `avg`是一个内部辅助函数,用于计算平均值。通过这种方式,我们可以将复杂逻辑分解为更小的、易于管理的部分。 通过这个例子,我们可以看到Embedded MATLAB Function如何在Simulink中集成MATLAB代码,实现复杂的计算任务。它允许用户充分利用MATLAB的灵活性和强大功能,同时保持Simulink的可视化和系统级建模的优势。在实际应用中,可以根据需要编写更复杂的算法,并在Simulink模型中直接调用,提高模型的可扩展性和复用性。