为每个子系统
将算法应用到单个元素或子数组的输入信号或面具参数
库:
金宝app模型/港口和子系统
高密度脂蛋白编码器/港口和子系统
描述
的为每个子系统块是一个子系统块预配置作为起点来创建一个子系统,重复执行模拟时间步中每个元素或子数组的输入信号或面具参数数组。
子系统内部的组块代表算法应用于一个元素或子数组的原始信号或面具参数数组。在子系统内部,每个块都有状态维护单独的组为每个元素或子数组的过程。因此,这个子系统的操作相似的行为来复制子系统为每个元素的内容在原始输入信号或面具参数数组,然后处理每个元素使用其各自子系统的副本。组块的子系统流程元素或子数组子系统连接结果输出信号。
配置子系统
的为每个子系统块包含一个为每一个块,作为一个子系统的控制块。指定的参数为每一个块配置子系统的分解或面具参数输入元素或子阵和个人配置连接结果输出信号。块的参数分区维度和分区宽度指定的尺寸把输入信号或面具参数数组和每个片的宽度,分别。指定分区一个行向量分区维度作为2
。指定分区一个列向量分区维度作为1
。使用的参数分区抵消指定一个缺口或重叠分区。指定一个的迭代次数限制处理数据的一个子集。了解更多关于块参数,看看为每一个。
指定哪个输入信号划分为每次迭代for - each子系统,使用输入分区在对话框的选项卡为每一个块。当指定分区的一个信号,指定分区维度,分区宽度,分区抵消参数。
你可以分区的面具参数为每个子系统块。分区是有用的系统在每个迭代中有相同的结构,但不同的参数值。在这种情况下,改变模型为每个参数分区额外的输入信号是麻烦。相反,添加一个面具参数for - each子系统。有关更多信息,请参见创建一个简单的面膜。选择屏蔽参数分区,使用参数分区选项卡的为每一个块对话框。有关更多信息,请参见选择分区参数,下面。
定义的维度以及连接指定的结果连接尺寸在输出连接选项卡。
每个子数组生成的结果块堆叠沿着连接尺寸。默认情况下,维度1 (y设在),这意味着结果是垂直堆放。然而,如果你指定一个连接尺寸的结果连接沿水平方向(x设在)。因此,如果这个过程生成行向量,然后连接结果是矩阵在第一种情况下,在第二种情况下一个行向量。
当选择一个输入信号或子系统面具参数分区,您必须指定如何将它分解成每个迭代元素或子阵。整数的值分区维度,分区宽度,分区抵消参数。
作为一个例子,考虑一个输入信号矩阵一个
的形式:
标签d1和d2分别定义维度1和2。如果你保留默认设置1
的宽度和分区维度和分区0
分区的抵消,然后仿真软件金宝app®片垂直于分区维度1在一个宽度等于分区宽度,这是一个元素:
这三个行向量矩阵分解为:
如果您指定2
相反,比如分区维度模型片垂直于维度2形成三个列向量:金宝app
除了设置分区维度来2
,如果你设置分区宽度来2
和分区抵消来1
,仿金宝app真软件使用两个重叠的3×2分区进行处理。
使用一个例子分区抵消参数,打开模型slexForEachOverlapExample
。
默认情况下,所有分区的输入信号或面具参数处理。处理分区的一个子集,输入分区的数量来处理的的迭代次数。在上面的矩阵的例子中,如果分区抵消被设置为0
(默认)的迭代次数被设置为2
,只有第一个2输入矩阵的行或列一个
处理。
请注意
只考虑一维信号的仿真软件。金宝app面具参数行或列向量,根据他们的方向。划分一个行向量,指定分区的维度,在列。划分一个列向量,指定分区尺寸为1,沿行。
代码重用的支持金宝app
某些型号的为每个子系统块提高代码重用金宝app仿真软件编码器™生成的代码。考虑一个模型包含两个可重用原子子系统块相同的标量算法应用于每个元素的信号。如果这些子系统的输入信号维度是不同的,金宝app仿真软件编码器生成的代码包括两个不同的函数。你可以用两个相同的替换这两个子系统为每个子系统块配置来处理每个元素各自的输入使用相同的算法。在这种情况下,金宝app仿真软件编码器生成的代码包含一个函数参数化输入信号元素的数量。这个函数被调用两次,一次为每一个独特的实例为每个子系统块模型。对于每一个在这些病例中,输入信号元素有不同的值。
多核执行支持金宝app
当你模拟模型在快速加速器模式中,仿真软件使用多核执行速度模拟for - each子系统。金宝app金宝app每个合格for - each子系统仿真软件自动配置文件前两个时间步它在快速加速器运行模式比较并行和串行执行时间。金宝app仿真软件然后指定for - each子系统并行、多核模拟运行的执行在随后的时间步骤如果这么做会加速执行时间。嵌套For - each子系统、多核执行仅适用于顶级子系统。多核执行并不适用于for - each包含连续状态或子系统函数调用者块。
抑制多核执行给定for - each子系统,设置MultithreadedSim
参数的为每一个块内的子系统“关闭”
。
set_param (ForEachBlockName、“MultithreadedSim”、“了”)
注意,这是一个参数的为每一个块内的子系统,而不是为每个子系统块本身。抑制多核执行所有for - each子系统模型,设置MultithreadedSim
模型的参数“关闭”
。
set_param (ModelName、“MultithreadedSim”、“了”)
重新启用多核执行,设置有关MultithreadedSim
参数的默认值“汽车”
。
例如,看到的多线程为每个子系统仿真使用。
请注意
如果你模拟模型快速加速器模式或从您的模型生成代码,然后分区面具for - each子系统参数,然后任何表达式for - each子系统内部引用一个分区的参数必须是一个可调的表情。看到可调表达的局限性(金宝app仿真软件编码器)。
功能的支持金宝app
的为每个子系统块既支持C-金宝appMEX S-functions和2级MATLAB®S-functions,提供功能支持多个执行实例使用这些技巧之一:金宝app
一个C-MEX s函数必须声明
ss金宝appSupportsMultipleExecInstances(年代,真的)
在mdlSetWorkWidths
方法。一个2级MATLAB函数必须声明
块。金宝appSupportsMultipleExecInstances = true
的设置方法。
如果你使用这些规范:
不缓存运行时数据如DWork和块I / O使用全局或持续变量或在用户数据的功能。
在一个为每个子系统块,每个函数执行方法
mdlStart
到mdlTerminate
为每个元素被称为一次处理的功能。因此,你必须确保不免费重复调用相同的内存mdlTerminate
。例如,考虑一个C-MEX s函数分配内存的运行时参数内mdlSetWorkWidths
。只需要一次释放的内存mdlTerminate
。作为解决方案,设置第一次调用后指针是空的mdlTerminate
。
例子
限制
对信息的局限性为每个子系统块,看for - each子系统的局限性。
港口
输入
输出
块特征
扩展功能
版本历史
介绍了R2010a