自定义块功能的比较
当创建一个自定义块,考虑:
这个表显示每个自定义块类型地址的三个问题。
造型方面的考虑
自定义块类型 | 模型状态动力学 | 仿真性能 | 代码生成 |
---|---|---|---|
解释MATLAB函数 | 没有 | 那么快 | 不支持金宝app |
2级MATLAB函数 | 是的 | 那么快 | 需要一个薄层色谱文件 |
MATLAB函数 | 没有 | 快 | 金宝app支持异常 |
MATLAB系统 | 是的 | 快 | 金宝app支持异常 |
功能 | 是的 | 快 | 需要一个薄层色谱文件或非内联函数的支持金宝app |
C调用者 | 没有 | 快 | 金宝app支持 |
C函数 | 是的 | 快 | 金宝app支持 |
s函数生成器 | 是的 | 快 | 金宝app支持 |
金宝app仿真软件的功能 | 是的 | 快 | 金宝app支持 |
子系统 | 是的 | 快 | 金宝app支持 |
Fcn | 没有 | 非常快 | 金宝app支持 |
自定义模块的详细设计,考虑:
自定义块需要什么多个输入和输出端口吗?
是什么回调方法与仿真软件进行通信金宝app®引擎和自定义块让你实现所有或这些回调方法的一个子集?
自定义块的影响有多重要更新速度模型图金宝app吗?
模型状态的行为
你需要模型状态行为的一块,需要部分或全部先前输出来计算当前的输出。看到状态变量为更多的信息。
自定义块类型 | 笔记 |
---|---|
Fcn,解释MATLAB函数,C调用者 | 不允许模型状态的行为。 |
MATLAB函数,C函数 | 允许你使用模型离散状态持续的 变量。 |
2级MATLAB®功能 | 允许您使用模型连续和离散状态的行为ContStates 或Dwork 运行时对象方法结合块回调方法。支持方法的列表,请参阅金宝app2级MATLAB函数回调方法在写2级MATLAB S-Functions。 |
MATLAB系统 | 允许您使用模型离散状态的行为DiscreteState 系统对象的属性,结合块回调方法。这个块使用系统对象™回调方法的方法:mdlOutputs (stepImpl ,outputImpl ),mdlUpdate (updateImpl ),mdlInitializeConditions (resetImpl ),mdlStart (setupImpl ),mdlTerminate (releaseImpl )。更多信息见系统对象是什么?。 |
C墨西哥人s函数,s函数生成器 | 允许你模型连续和离散状态行为结合块回调方法。有关更多信息,请参见回调方法对C墨西哥人S-Functions |
金宝app仿真软件的功能 | 与发动机直接沟通。您可以使用适当的块模型的状态行为的连续和离散模型块库。金宝app当多个调用这个函数源自不同的调用者,这些调用之间的状态值也持久。有关更多信息,请参见调用一个仿真软金宝app件功能块从多个网站。 |
子系统 | 与发动机直接沟通。您可以使用适当的块模型的状态行为的连续和离散模型块库。金宝app |
仿真性能
对于大多数应用程序,所有自定义块类型提供满意的模拟性能。使用仿真软件分析金宝app器获取实际的性能指标。看到分析器获取性能数据如何为更多的信息。
性能指标的两类接口成本和成本算法。接口成本所花费的时间从仿真软件引擎进入移动数据块。金宝app该算法花费的时间执行块实现的算法。
自定义块类型 | 笔记 |
---|---|
Fcn | 仿真性能最高。与仿真软件引擎块紧密集成模拟和代码生成和优化。金宝app |
解释MATLAB函数 | 有较慢的性能由于接口,但具有相同的成本算法MATLAB函数。 当数据块(比如输入和输出)访问或从一个回来解释MATLAB函数块,该数据转换为MAT金宝appLAB仿真软件引擎包数组。这种包装需要额外的时间和导致临时增加交流期间在内存中。如果你通过大量数据在这个接口,如帧或数组,性能可以大大减缓。 一旦数据被转换,MATLAB执行引擎执行算法。因此,算法MATLAB函数的成本是一样的。 |
2级MATLAB函数 | 带来相同的算法的成本解释MATLAB函数块,但接口成本略高。由于MATLAB S-Functions可以处理多个输入和输出,包装是要复杂得多解释MATLAB函数块。此外,仿真软件引擎调用MATLAB金宝app方法实现的每个块的执行引擎,而解释MATLAB函数块调用MATLAB只执行引擎的输出 方法。 |
MATLAB函数 | 通过代码生成和执行模拟产生相同的接口成本与其他仿真软件内置的街区。金宝app 算法的成本这一块很难分析由于块的实现。平均而言,一个功能块和MATLAB函数以相同的速度运行。 如果MATLAB函数有代码块使用 coder.extrinsic 调用MATLAB执行引擎,它会导致所有MATLAB函数或成本解释MATLAB函数块。从一个调用MATLAB执行引擎MATLAB函数块产生警告无意阻止你这样做。为了减少算法的成本,您可以禁用调试MATLAB函数块。 |
MATLAB系统 | 在解释执行模式,性能是相似的2级MATLAB函数因为这个模型模拟了使用MATLAB执行引擎块。在代码生成模式中,性能是相似的MATLAB函数因为这个模型模拟了使用生成的代码块。有关更多信息,请参见MATLAB函数在这个表条目。 |
C调用者,C函数 | 第一次模型模拟,慢是因为解析和构建的自定义代码。加快模拟第一次编译后,配置参数中,选择更快的构建为更快的编译和选择快速跑为更快的模拟。 |
C墨西哥人s函数 | 模拟通过编译后的代码,并且有相同的接口成本作为仿真软件内置的块。金宝app算法的成本取决于s函数的复杂性。 |
s函数生成器 | 这只块构建一个功能从你提供的规格和C代码。您还可以使用该块作为生成的s函数的包装器模型。算法这一块的成本相比,C墨西哥人s函数只发生的包装。 |
金宝app仿真软件的功能,子系统 | 如果包含在库,介绍了没有接口或算法的成本超出了通常会发生如果块存在作为常规子系统模型。 性能成正比子系统实现的算法的复杂性。如果库中包含的子系统,一些成本是发生在仿真软件加载任何卸库图是第一次更新或准备模拟。金宝app如果所有引用的库模块保持不变,随后仿真软件不重新加载库。金宝app编译模型变得比如果模型不使用库。 |
代码生成
你需要的代码生成模型是一个更大系统的一部分。并不是所有的自定义块类型支持代码生成金宝app金宝app仿真软件编码器™。
自定义块类型 | 笔记 |
---|---|
Fcn | 金宝app支持代码生成。 |
解释MATLAB函数 | 不支持代码生成。金宝app |
C调用者,C函数 | 金宝app支持代码生成。 |
2级MATLAB函数 | 生成的代码只有在你使用目标语言编译器实现的算法(TLC)功能。在加速和外部模式模拟,你可以选择执行解释方式的s函数通过调用回MATLAB执行引擎没有实现的算法。如果MATLAB函数SimViewingDevice ,金宝app仿真软件编码器产品自动省略了块在代码生成。 |
MATLAB函数,MATLAB系统 | 金宝app支持代码生成。但是,如果您的块调用MATLAB执行引擎,它将构建的金宝app仿真软件编码器产品只有在调用MATLAB执行引擎不影响块输出。在这种情况下,金宝app仿真软件编码器产品省略了这些调用生成的C代码。这个特性允许你离开可视化代码,即使生成嵌入代码。 |
C墨西哥人s函数,s函数生成器 | 都支持代码金宝app生成。
看到S-Functions和代码生成(金宝app仿真软件编码器)为更多的信息。 |
金宝app仿真软件的功能 | 金宝app支持代码生成。 |
子系统 | 金宝app支持代码生成只要块中包含的子系统支持代码生成。有关更多信息,请参见子系统(金宝app仿真软件编码器)。 |
多个输入和输出端口
这些类型的自定义模块支持多种输入和输出端口。金宝app
自定义块类型 | 笔记 |
---|---|
Fcn,解释MATLAB函数 | 金宝app只支持一个输入和一个输出端口。 |
MATLAB函数 | 金宝app支持多个输入和输出端口,包括总线信号。看到结构如何输入和输出接口和总线信号为更多的信息。 |
MATLAB系统 | 金宝app支持多个输入和输出端口,包括总线信号。此外,您可以修改数量的输入和输出端口使用基于系统对象的属性getNumInputs 和getNumOutputs 方法。 |
C调用者,C函数 | 金宝app支持多个输入和输出端口,包括总线信号。 |
墨西哥人所二级MATLAB的s函数,C s函数,s函数生成器 | 金宝app支持多种输入和输出端口。此外,您可以修改输入和输出端口的数量根据用户定义的参数。C墨西哥人功能s函数生成器金宝app支持总线信号。 |
金宝app仿真软件的功能 | 金宝app支持多个输入和输出端口,包括总线信号。 |
子系统 | 金宝app支持多个输入和输出端口,包括总线信号。此外,您可以修改输入和输出端口的数量根据用户定义的参数。看到Self-Modifiable相关子系统为更多的信息。 |
更新的速度金宝app图
金宝app仿真软件更新图之前每一个模拟和用户请求时。每一块向图更新过程引入了一些开销。
自定义块类型 | 笔记 |
---|---|
Fcn,解释MATLAB函数 | 图更新成本低。 |
MATLAB函数,C调用者,C函数 | 仿真是通过代码生成,所以这一块可以先花大量的时间在更新。然而,由于代码生成增量,仿真软件不反复更新块,如果块和信号连接到它没有改变。金宝app |
MATLAB系统 | 速度比MATLAB函数因为代码不是生成更新图。代码生成是增量,仿真软件不反复更新块,如果块和信号连接到它没有改变。金宝app |
C墨西哥人s函数所二级MATLAB函数 | 带来更大的成本比其他仿真软件模块只有覆盖方法时执行更新图。金宝app如果这些方法变得复杂,他们可以贡献显著的时间更新图。的列表方法时执行更新图,看到流程视图金宝app仿真软件与C S-Functions引擎交互。当更新图,仿真软件调用所有相关方法在模型中初始化阶段,金宝app但不包括,mdlStart 。 |
金宝app仿真软件功能,子系统 | 速度正比于子系统的算法实现的复杂性。如果库中包含的子系统,一些成本是发生在仿真软件加载任何卸库图是第一次更新或准备模拟。金宝app如果所有引用的库模块保持不变,随后仿真软件不重新加载库。金宝app编译模型变得比如果模型不使用库。 |
回调方法
金宝app仿真软件模块通过块回调方法与仿真软件引擎,这充分指定块的行为(仿真软件功能块除外)。每个自定义块类型允许您实现一组不同的回调方法。学习如何块与仿真软件引擎,明白了金宝app金宝app仿真软件与C S-Functions引擎交互。这个表使用s函数回调方法名字作为等价物。
自定义块类型 | 笔记 |
---|---|
Fcn,解释MATLAB函数,MATLAB函数,C调用者 | 所有创建一个mdlOutputs 方法计算值的输出输入的值。你不能实现任何其他使用其中一个块和回调方法,因此,不能模型状态的行为。 |
C函数 | 允许实现启动、输出和终止回调方法。允许建模与持久数据的离散状态。 |
2级MATLAB函数 | 允许实现更大的子集的回调方法,包括方法可用于连续和离散状态模型。支持方法的列表,请参阅金宝app2级MATLAB函数回调方法在写2级MATLAB S-Functions。 |
MATLAB系统 | 使用系统对象回调方法的方法:mdlOutputs (stepImpl ,outputImpl ),mdlUpdate (updateImpl ),mdlInitializeConditions (resetImpl ),mdlStart (setupImpl ),mdlTerminate (releaseImpl )。有关更多信息,请参见金宝app与系统仿真软件引擎交互对象的方法 |
C墨西哥人s函数 | 允许实施一套完整的回调方法。 |
s函数生成器 | 允许的实现mdlOutputs ,mdlDerivatives 和mdlUpdate 。 |
金宝app仿真软件的功能 | 包装作为一个独立的函数。任何调用这个函数成为一个回调方法基于调用者的位置。 |
子系统 | 与发动机直接沟通。您可以使用适当的块模型状态行为的连续和离散模型块库。金宝app |
比较MATLABS-Functions来MATLAB函数的代码生成
MATLAB S-functions和MATLAB函数代码生成的一些根本性的差异。
的金宝app仿真软件编码器产品可以生成代码MATLAB S-functions和MATLAB函数代码生成。然而,MATLAB S-functions需要目标语言编译器对代码生成(TLC)文件。MATLAB函数代码生成不需要TLC文件。
MATLAB S-functions可以使用任何MATLAB函数而MATLAB函数代码生成是MATLAB语言的一个子集。为代码生成、支持的功能列表金宝app函数和对象支持C / c++代码生成金宝app。
MATLAB S-functions可以动态模型离散和连续状态而MATLAB函数代码生成不能动态模型状态。
扩展自定义块功能
您可以扩展任何自定义的功能块使用回调函数和MATLAB图形。
块回调执行用户定义的操作在特定点的模拟。例如,回调可以数据加载到MATLAB工作区之前模拟或仿真数据生成一个图的模拟。你可以分配块回调的任何自定义块类型。可用回调函数的列表和更多关于如何使用它们的信息,明白了块回调。
软件设计师,MATLAB图形用户界面开发环境,提供了轻松地创建自定义的用户界面工具。看到应用程序构建使用应用程序设计师的更多信息。
另请参阅
Fcn|解释MATLAB函数|2级MATLAB函数|MATLAB函数|MATLAB系统|功能|s函数生成器|金宝app仿真软件的功能|子系统|C调用者|C函数