主要内容

使用While迭代器和For迭代器迭代子系统执行迭代子系统

迭代器子系统例如While迭代器和For迭代器子系统,是一种逻辑上执行的子系统,它在一个时间步长中执行一次或多次,以响应子系统块内部的控制块。控制块实现的控制逻辑类似于编程语言结构(如控件)所表达的控制逻辑循环或循环。

有关For Each子系统的信息,该子系统将输入信号或掩码参数划分为单独的元素或子数组,并对每个元素或子数组应用算法每个子系统

请注意

While迭代器子系统而且对于迭代器子系统block不能包含连续状态的块(例如,来自continuous块库的块)。子系统中所有块的采样时间必须继承(-1)或常数(正)

具有While结构的模型

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

打开模型ex_while_iterator_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结构创建模型

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

  1. 放置一个While迭代器子系统block在Simulink中®编辑器。双击子系统块以显示其内容。

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

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

    的输出中的迭代数而迭代器块被添加到它之前的值,直到和大于或等于的最大和轮廓尺寸块1。

  4. 导航到模型的顶层。

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

    而迭代器块需要一个初始逻辑条件(输入端口标记集成电路)的第一次迭代。这个信号使While迭代器子系统块,并且必须起源于子系统外部。如果这个值非零,则进行第一次迭代。

  6. 连接一秒钟常数块到输入端口1。该块为迭代算法提供了一个最大值。算法将连续的整数相加,直到达到最大值。

  7. 连接一个显示块输出端口1。的迭代次数而迭代器阻塞输出端口。

  8. 运行一个模拟。

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

请注意

类的迭代执行期间,模拟时间不会提前While迭代器子系统块。然而,子系统中的块将每个迭代视为一个时间步长。结果,在一个While迭代器子系统Block,一个具有状态的块的输出(即,其输出依赖于它之前的输入的块),反映了它在上一个迭代中的输入值循环。输出是反映前一个模拟时间步骤的块输入。例如,单位延迟块在While迭代器子系统中的前一次迭代中输出其输入的值循环,而不是前一个模拟时间步长的值。

用于结构的模型

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

打开模型ex_for_iterator_block

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

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

number_of_iterations = 5 sum = 0 FOR迭代数= 1 TO number_of_iterations sum = sum +迭代数

使用For结构创建模型

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

  1. 放置一个对于迭代器子系统块在Simulink编辑器。双击子系统块以显示其内容。

  2. 双击对迭代器块打开其块参数对话框。集启动时的状态重置而且迭代极限源外部

  3. 添加内存总和,外港块。如图所示连接块。为内存块,选择继承采样时间复选框。

    的输出中的迭代数对迭代器块被添加到它之前的值,用于指定的迭代次数轮廓尺寸块1。

  4. 导航到模型的顶层。

  5. 连接一个常数块到输入端口1。的迭代次数对迭代器块。设置恒定值5

  6. 连接显示块输出端口1和2。这些块显示了从对迭代器块输出端口和从内存块。

  7. 运行一个模拟。

    在每个时间步骤中,前五个迭代数相加,得到总和(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对迭代器块。

另请参阅

||||

相关的话题

Baidu
map