文件

迭代子系统执行

一种逻辑上执行子系统块在由使能运行在当前时间步骤一次或多次控制块。类似于由一种编程语言的语句(例如,如果 - 则,开关,同时,为)表示的控制块实现的控制逻辑。

迭代器子系统是一种逻辑执行的子系统,它在一个时间步骤中执行一次或多次,以响应子系统块内部的控制块。

笔记

而迭代器子系统对迭代器子系统块必须不包含带有连续状态块(例如,从连续块库块)。子系统内的所有块的采样时间必须是继承(-1)或恒定(INF)

带有While结构的模型

而迭代器子系统块是一个子系统块预配置为创建子系统的起点,该子系统在模拟时间步期间重复执行,而逻辑(布尔)表达式为真。

考虑以下模型。

的输入1真正的)到而迭代器块激活子系统。在每个时间步骤,直到达到最大总和的当前迭代数被添加到运行总数。

模型中的结构可以用下面的伪代码表示。

maximum_sum = 10;金额= 0;iteration_number = 0 condition = (maximum_sum > 0) WHILE condition NOT EQUAL 0 iteration_number = iteration_number + 1 sum = sum + iteration_number IF (sum > maximum_sum OR iteration_number > maximum_iterations) THEN condition = 0 END WHILE

用While结构创建模型

要创建示例模型,请使用以下过程。

  1. 一个地方而迭代器子系统块在Simulink编辑器万博1manbetx。双击子系统块以显示其内容。

  2. 双击而迭代器块以打开其块参数对话框。设置最大迭代次数20.启动时国重置。选择显示迭代数端口复选框。

  3. 添加记忆关系操作符,块。连接块,如图所示。为了记忆块,选择继承采样时间复选框。

    从的输出迭代次数而迭代器块被添加到其先前的值,直到总和是大于或等于从最大总和轮廓尺寸块1。

  4. 导航到模型的顶层。

  5. 连接常数块输入到输入端口2。该块提供的初始逻辑条件而迭代器堵塞。设置恒值到任何非零数。

    而迭代器块需要初始逻辑条件(输入端口标记集成电路)作为第一次迭代。这个信号使而迭代器子系统块,并且必须从子系统外发起。如果这个值是零,第一次迭代发生。

  6. 连接第二常数块输入端口1。该块提供了用于迭代算法的最大值。直到达到最大值的算法增加连续整数。

  7. 连接展示块到输出端口1。该块示出了从当积分块输出端口的迭代次数。

  8. 运行一个仿真。

    在单个时间步骤中,将前四个迭代数相加,得到总和(10.)。随着第五次迭代,总和(15.)大于最大总和(10.),迭代停止,并为下一个时间步长的块需要等待。

笔记

仿真时间期间的反复执行不前进虽然迭代子系统堵塞。然而,在子系统块对待每一次迭代的时间步长。其结果是,在而迭代器子系统块,具有状态的块(即其输出依赖于其前一个输入的块)的输出,反映其在上一个迭代时的输入值环形。输出做不是反映在前一个模拟时间步长的块输入。例如,While子系统中的Unit Delay块输出它在上一个迭代时的输入值循环,而不是在以前的模拟时间步长值。

与对于结构模型

对迭代器子系统块是一个子系统块,预先配置为创建子系统的起点,该子系统在模拟时间步骤中为指定的迭代次数重复执行。

考虑以下模型。

输入到对于迭代器块指定的迭代次数。在每个时间步骤,当前的迭代数被添加到运行总计为5.迭代。

为了在模型结构可以用下面的伪代码来表示。

Number_of_iterations = 5 sum = 0;iteration_number = 0 FOR iteration_number = 0 TO number_of_iterations iteration_number = iteration_number + 1 sum = sum + iteration_number结束

用For结构创建模型

要创建示例模型,请使用以下过程。

  1. 一个地方对迭代器子系统块在Simulink编辑器万博1manbetx。双击子系统块以显示其内容。

  2. 双击对迭代器块以打开其块参数对话框。集启动时国重置迭代限制源外部的

  3. 添加记忆,外港块。连接块,如图所示。为了记忆块,选择继承采样时间复选框。

    从的输出迭代次数对迭代器块添加到其先前的值,以获得指定的迭代次数轮廓尺寸块1。

  4. 导航到模型的顶层。

  5. 连接常数块到输入端口1。属性的迭代次数对迭代器堵塞。设置恒值5.

  6. 连接展示块到输出端口1和2。这些块显示了从对于系统集成商块输出端口的和由记忆堵塞。

  7. 运行一个仿真。

    在每个时间步骤中,将前5个迭代数相加,得到总和(15.)。

使用赋值块

所述迭代器对于块与分配块在一个矢量或矩阵重新分配值工作得很好。下面的示例示出了使用对于迭代器块。注意在数据矩阵的各个维度传递。

示例使用For子系统输出输入2 × 5矩阵(2行,5列)的正弦值任务堵塞。该过程如下。

  • 一个2乘5的矩阵输入到选择器块和赋值块。

  • 选择器块剥掉从在列值的输入矩阵的2×1矩阵表示由对于迭代器块的当前迭代值。

  • 的2×1矩阵的正弦取。

  • 将正弦值2 × 1矩阵传递给赋值块。

  • 赋值块将原始的2 × 5矩阵作为其输入之一,在迭代值指示的列位置将2 × 1矩阵赋回原始矩阵。

    在为参数对话框重新分配指定的行任务在示例块是[1,2]。因为只有两个原始矩阵行,你也可以指定-1行(即所有行)。

    笔记

    三角函数块已经是能够拍摄矩阵的正弦值。该示例使用三角函数块仅作为用于改变矩阵的每个元素与分配块的合作和对于迭代器块的例子。

模型的例子

也可以看看

这个话题有用吗?