使用While迭代器和For迭代器迭代子系统执行迭代子系统
迭代器子系统例如While迭代器和For迭代器子系统,是一种逻辑上执行的子系统,它在一个时间步长中执行一次或多次,以响应子系统块内部的控制块。控制块实现的控制逻辑类似于编程语言结构(如控件)所表达的控制逻辑而
循环或为
循环。
有关For Each子系统的信息,该子系统将输入信号或掩码参数划分为单独的元素或子数组,并对每个元素或子数组应用算法每个子系统.
请注意
的While迭代器子系统而且对于迭代器子系统block不能包含连续状态的块(例如,来自continuous块库的块)。子系统中所有块的采样时间必须继承(-1
)或常数(正)
.
具有While结构的模型
的While迭代器子系统Block是一个子系统块预先配置为创建子系统的起点,该子系统在模拟时间步骤期间重复执行,而逻辑(布尔)表达式为真。
输入为1
(真正的
)而迭代器Block激活子系统。在每个时间步骤中,当前迭代数被添加到运行总数中,直到达到最大和。
的而模型中的结构可以用下面的伪代码表示。
maximum_sum = 10 sum = 0 iteration_number = 1条件= TRUE WHILE(条件为TRUE) AND (iteration_number <= maximum_iterations) sum = sum + iteration_number IF (sum > maximum_sum) THEN条件= FALSE END IF iteration_number = iteration_number + 1 END WHILE
使用While结构创建模型
要创建示例模型,请使用以下过程。
放置一个While迭代器子系统block在Simulink中®编辑器。双击子系统块以显示其内容。
双击而迭代器块打开其块参数对话框。设置最大迭代次数来
20.
而且启动时的状态来重置
.选择显示迭代次数端口复选框。添加内存,关系操作符,总和块。如图所示连接块。为内存块,选择继承采样时间复选框。
的输出中的迭代数而迭代器块被添加到它之前的值,直到和大于或等于的最大和轮廓尺寸块1。
导航到模型的顶层。
连接一个常数块到输入端口2。此块提供初始逻辑条件的值。而迭代器块。设置恒定值对任何非零数。
的而迭代器块需要一个初始逻辑条件(输入端口标记
集成电路
)的第一次迭代。这个信号使While迭代器子系统块,并且必须起源于子系统外部。如果这个值非零,则进行第一次迭代。连接一秒钟常数块到输入端口1。该块为迭代算法提供了一个最大值。算法将连续的整数相加,直到达到最大值。
连接一个显示块输出端口1。的迭代次数而迭代器阻塞输出端口。
运行一个模拟。
在单个时间步骤中,前四个迭代数相加,得到总和(
10
).在第五次迭代中,和(15
)大于最大和(10
),迭代停止,块等待下一个时间步骤。
请注意
类的迭代执行期间,模拟时间不会提前While迭代器子系统块。然而,子系统中的块将每个迭代视为一个时间步长。结果,在一个While迭代器子系统Block,一个具有状态的块的输出(即,其输出依赖于它之前的输入的块),反映了它在上一个迭代中的输入值而
循环。输出是不反映前一个模拟时间步骤的块输入。例如,单位延迟块在While迭代器子系统中的前一次迭代中输出其输入的值而
循环,而不是前一个模拟时间步长的值。
用于结构的模型
的对于迭代器子系统Block是一个子系统块预先配置为创建子系统的起点,该子系统在模拟时间步骤中重复执行指定次数的迭代。
的输入对迭代器Block指定迭代次数。在每个时间步骤中,当前的迭代数被添加到的运行总数中5
迭代。
的为模型中的结构可以用下面的伪代码表示。
number_of_iterations = 5 sum = 0 FOR迭代数= 1 TO number_of_iterations sum = sum +迭代数
使用For结构创建模型
要创建示例模型,请使用以下过程。
放置一个对于迭代器子系统块在Simulink编辑器。双击子系统块以显示其内容。
双击对迭代器块打开其块参数对话框。集启动时的状态来
重置
而且迭代极限源来外部
.添加内存,总和,外港块。如图所示连接块。为内存块,选择继承采样时间复选框。
的输出中的迭代数对迭代器块被添加到它之前的值,用于指定的迭代次数轮廓尺寸块1。
导航到模型的顶层。
连接一个常数块到输入端口1。的迭代次数对迭代器块。设置恒定值来
5
.连接显示块输出端口1和2。这些块显示了从对迭代器块输出端口和从内存块。
运行一个模拟。
在每个时间步骤中,前五个迭代数相加,得到总和(
15
).
使用分配块
的对迭代器Block与赋值块来重新分配向量或矩阵中的值。下面的示例展示了a的使用对迭代器块。注意传递的数据中的矩阵维数。
该示例使用一个For Iterator子系统输出一个输入2 × 5矩阵(2行,5列)的sin值赋值块。具体流程如下。
A的输入是一个2 × 5矩阵选择器Block和赋值块。
的选择器控件的当前迭代值所指示的列值处,块从输入矩阵中剥离2 × 1矩阵对迭代器块。
对2 × 1矩阵求sin。
sin值2 × 1矩阵传递给赋值块。
的赋值Block将原始的2 × 5矩阵作为其输入之一,在迭代值所指示的列位置将2 × 1矩阵赋回原始矩阵。
注意赋值块复制第一个输入(Y0)到输出(Y)只在第一次迭代中。第二个输入的值(U)在第一次迭代和后续迭代时复制到输出。所有这些操作都发生在单个时间步长中。
属性的参数对话框中为重新分配指定的行赋值示例中的块为[1,2]。因为在原始矩阵中只有两行,您还可以为行指定-1(即所有行)。
请注意
的三角函数Block已经能够求出矩阵的正弦值了。该示例使用三角函数块仅作为一个例子,以改变矩阵的每个元素与协作赋值Block和a对迭代器块。
另请参阅
While迭代器子系统|而迭代器|对于迭代器子系统|对迭代器|子系统