通过循环处理数组或群体中的单个元素
- 更新时间2025-04-04
- 阅读时长4分钟
配置循环将数组或群体的单个元素传入和传出循环。
配置输入隧道处理数组或群体的单个元素
如将数组或群体连线至For循环或While循环,可启用自动索引来读取和处理数组中的每个元素。通过上游节点连线数组或群体至循环边框上的自动索引输入隧道,并在输入隧道上启用自动索引。从第一个元素开始,数组或群体的元素每次有一个进入隧道。
按照下列步骤,将数组元素传入隧道:
- 右键单击循环边框的隧道。
- 根据要处理元素的方式酌情选择下列选项之一:
- 从快捷菜单中选择禁用索引。禁用索引后,数组或群体中的全部元素传入循环,输出隧道返回等量元素的数组。
- 从快捷菜单中选择启用索引。启用索引后,数组或群体中的单个元素传入循环,输出隧道返回单个元素。
注: 为避免循环不执行时出现的默认数据输出值,For循环中每次有输出通道时均应启用自动索引。
循环输出隧道上的方括号表示已启用自动索引。
配置输出隧道返回数组的可选值
按照下列步骤配置循环输出隧道,以返回数组的索引值、最终值或连接值:
- 右键单击输出隧道。
- 在快捷菜单中选择隧道模式»最终值、索引或连接。
关于隧道可返回的输出选项的详细信息,见下表。
输出名称 | 说明 |
---|---|
索引 | 每循环一次,输出数组中就增加一个元素。因此,自动索引的输出数组的大小等于循环的次数。例如,如循环执行了10次,那么输出数组就含有10个元素。 |
最终值 | 输出隧道只返回最后一次循环的元素值。 |
连接 | LabVIEW按顺序连接所有输入,形成与连接的输入数组相同维度的输出数组。连接隧道模式下,连接数组的方式和创建数组函数的方式相同。 |
输出隧道和下一个节点之间的连线粗细程度也反映了数组是索引模式、返回最终值模式,还是连接模式。索引模式的连线比连接模式下的粗。因为索引模式下,输出数组比输入数组多了一个维度,用来存放元素的索引值。而返回终值模式下的连线比索引和连接模式下的连线均要细。
注: 循环从一维数组中索引标量元素,从二维数组中索引一维数组,以此类推。输出隧道的情况正好相反。标量元素在输出隧道上按顺序累积形成一维数组,一维数组累积形成二维数组,以此类推。
关于禁用自动索引的范例,见labview\examples\Arrays\Arrays.lvproj。
为连线至循环的数组或群体选择自动索引类型
循环类型 | 数组或群体配置 | 自动索引行为 | 范例 |
---|---|---|---|
For循环 | 输入隧道连接一个数组或群体,循环总数接线端不连线 | 如对连线至For循环输入隧道的数组或群体启用自动索引,For循环执行的次数将与数组或群体的大小一致,因此不必连接循环总数接线端。默认情况下,LabVIEW对连接到For循环的每个数组或群体均启用自动索引。 注: 如不必每次处理数组或群体中的一个元素,可以禁用自动索引。 |
— |
For循环 | 连线循环总数接线端 | 如在循环总数接线端已连线的情况下启用自动索引,LabVIEW实际执行的循环计数值是两者中的较小值:数组/群体大小或循环总数接线端的值。 | 例如,连线至For循环的数组元素或群体包含10个元素,而循环总数接线端的值为15,此时循环将仅执行10次。 |
For循环 | 多个数组或群体 | 如为多个隧道启用自动索引,则LabVIEW执行的循环次数是数组或群体大小的最小值。 | 例如,两个自动索引数组进入循环,分别包含10个和20个元素,同时将值15连接到总数接线端,此时该循环仅执行10次。循环将索引第一个数组的所有元素,索引第二个数组中的前10个元素。再如,假设要在一个图形上绘制两个数据源,且只需绘制前100个元素,这时可将值100连接到循环总数接线端。然而,如果较小的数据源只含有50个元素,那么循环将执行50次,并且只索引数据源的前50个元素。数组的大小可使用“数组大小”函数确定。 |
While循环 | 单个连线的数组或群体 | 如为一个进入While循环的数组或群体启用自动索引,While循环索引数组或群体的方式与For循环相同。但是,While循环只有在满足特定条件时才会停止执行,因此While循环的执行次数不受数组或群体大小的限制。如循环计数大于数组或群体大小,则While循环处理数组或群体中的所有元素,并在后续循环中使用数组或群体元素类型的默认值。可以使用“数组大小”或“群体大小”函数来阻止默认值传递到While循环,这些函数指示数组或集合中的元素数量。配置While循环在循环计数等于数组或群体大小时停止执行。While循环的自动索引功能默认是关闭的。 提示 由于不能预先确定输出数组或群体的大小,相较于While循环,对For循环的输出启用自动索引更为有效。循环次数过多可能会引起系统内存溢出。 |
— |