提高代码效率通过合并多个插值使用Prelookup块
您可以使用模型变压器工具重构建模模式来提高生成的代码的效率。变压器的模型识别和合并多个插值使用Prelookup块具有相同的输入信号从Prelookup块的输出连接到一个插值使用Prelookup块。
模型变压器工作的性质插值使用Prelookup块是相同的除了表数据。减少插值使用Prelookup块的数量在一个模型减少了代码中的变量分配的数量,使生成的代码的效率。您可以使用模型变压器应用或编程命令来重构模型。
变压器可以替代多个模型插值使用Prelookup:
有相同的输入信号连接到Prelookup块相同的指数和部分参数
输出信号连接到相同的吗多端口切换块
有相同的断点规范、价值观和数据类型
有相同的算法参数
对部分参数有相同的数据类型吗
合并模型插值使用Prelookup块使用变压器应用
这个例子展示了如何使用该模型变压器使用Prelookup块识别冗余的插值,然后重构模型。
该模型ex_interpolation_optimize
使用Prelookup块几个插值使用Prelookup块的输入信号。这些插值模块的输出连接到一个多端口切换块。
在本例中,您确定插值使用Prelookup块符合转换,代之以一个插值使用Prelookup块和常数块连接到多端口的交换机。
保存模型到你的工作目录。
在应用程序选项卡上,单击模型变压器。
在转换文件夹,选择代替插值使用Prelookup块检查。
选择跳过Interpolation-ND块在图书馆从这个转换选项,以避免更换插值使用Prelookup块与一个图书馆。
在前缀的转换模型字段中,指定一个前缀的重构模型。
点击运行这个检查。顶部结果表包含超链接使用Prelookup插值模块和相应的多端口开关组端口指数。
清除复选框候选人的团体组,你不想变换。
点击重构模型。的结果表包含一个链接到新模型。表包含超链接共享插值使用Prelookup块和相应的多端口切换阻塞端口。该工具还创建了一个
m2m_ex_interpolation_optimize
包含新文件夹gen_ex_interpolation_optimize.slx
模型。
这两个Prelookup和Prelookup1 Prelookup块gen_ex_interpolation_optimize.slx
模型连接到单一插值使用Prelookup块和固定块连接到多端口给开关组端口表数据作为输入。
通过编程方式合并插值使用Prelookup块
使用编程模型变压器,使用:
保存模型
ex_interpolation_optimize
在当前工作目录中。确定候选人资格转换,使用函数
金宝appSimulink.ModelTransform.CommonSourceInterpolation.identifyCandidates
创建的对象transformResults
。transformResults = 金宝appSimulink.ModelTransform.CommonSourceInterpolation.identifyCandidates (“ex_interpolation_optimize”)
transformResults =结果与属性:候选人:[1×1 struct]
的
transformResults
对象都有一个属性,候选人
,这是一个结构有两个字段,InterpolationPorts
和SwitchPorts
。transformResults。候选人= struct with fields: InterpolationPorts: [4×1 struct] SwitchPorts: [4×1 struct]
查看
InterpolationPorts
字段。transformResults.Candidates。InterpolationPorts =
4×1结构体数组字段:阻塞端口
的
InterpolationPorts
字段包含两个数组,块
和港口
。类似地,SwitchPorts
具有相同的属性。转换
Candidates.InterpolationPorts
和Candidates.SwitchPorts
字段表。struct2table (transformResults.Candidates.InterpolationPorts) struct2table (transformResults.Candidates.SwitchPorts)
ans = 4×2表块港口_____________________________________________ ____ {' ex_interpolation_optimize /插值使用Prelookup↵'} 0 {' ex_interpolation_optimize /插值使用Prelookup1↵'} 0 {' ex_interpolation_optimize /插值使用Prelookup2↵'} 0 {' ex_interpolation_optimize /插值使用Prelookup3↵'} 0 ans = 4×2表块港口______________________________ ____ {' ex_interpolation_optimize / Multiport_Switch '} 1 {' ex_interpolation_optimize / Multiport_Switch '} 2 {' ex_interpolation_optimize / Multiport_Switch '} 3 {' ex_interpolation_optimize / Multiport_Switch '} 4
使用
SwitchPorts
看到这插值使用Prelookup块多端口开关组端口连接。重构模型,使用函数
金宝appSimulink.ModelTransform.CommonSourceInterpolation.refactorModel
。这个函数使用的对象transformResults
从identifyCandidate
函数。refactorResults = 金宝appSimulink.ModelTransform.CommonSourceInterpolation.refactorModel (transformResults)
refactorResults = refactorResults属性:ModelName: ex_interpolation_optimize ModelDirectory:”TraceabilityInfo: [4×1 containers.Map]
的
ModelName
和ModelDirectory
的属性refactorResults
对象列表的名称和位置的重构模型。TraceabilityInfo
是一个containers.Map
对象列表块跟踪信息。
条件和限制
变压器不能替代模型插值使用Prelookup块如果:
的插值使用Prelookup块注释掉地区或不活跃的变体。
的插值使用Prelookup块蒙面。
变压器的应用不能替代模型插值使用Prelookup各地块的边界原子子系统,引用的模型,或library-linked块。