While循环

1.While循环是一种结构,它重复执行代码片段直到满足某种条件为止。它可比作传统语言中的Do Loop或Repeat-Until循环。它位于编程→结构→While循环。每个While循环都有一个条件端子和一个重复端子。如图:

重复端子用于记录和输出已执行的循环的次数,条件端子输入的是一个布尔变量:真或假,While循环将一直执行到连接条件端子上的布尔值变成真或假为止,取决于条件端子设置为“真(T)时停止”还是“真(T)时继续”。在条件端子上单击右键即可进行更改。如图:

下面举个简单的例子:利用While循环产生随机数,当产生的随机数大于0.8时,循环停止。
步骤如下:
1. 打开前面板,新建两个数值显示控件,一个为循环次数,一个显示最后产生的那个大于0.8的随机数。如图:

2. 切换到程序框图,放置一个While循环,如图:

3. 放置随机数函数到While循环内,并连线,如图:

4. 放置比较函数,将循环次数与重复端子连线,如图:

5. 运行,即可在前面板上看到结果,如图:

在程序框图中,在数值显示控件上单击右键,可更改数值的类型,如图:

各种数值的类型都可以看见,我就不再赘述。
在While循环的边框上单击右键,可添加位移寄存器,如图:

有关位移寄存器的用法,我们将会在For循环中讲到,这里暂不做介绍。
注意:While循环的条件端子一定要有连线,否则程序无法运行!如图:

For循环

1. For循环位于函数→编程→结构→For循环,如图:

从图中可以看到,For循环有两个端子
计数端子:要执行循环的次数,可用于For循环内部的循环计数
重复端子:已执行循环的次数,可用于For循环内部的重复计数
For循环应用举例:产生10个随机数,并把最后一个显示出来。
步骤如下:
1. 放置一个数值显示控件到前面板,并改名为随机数。
2. 放置For循环到程序框图,如图:

3.放置随机数函数到程序框图,并连线
4.计数端子上单击右键,选择创建常量,并输入10,如图:

5.运行程序,便可在前面板上看到结果。 6.因为程序的运行的速度非常快,我们无法一个一个地看清所产生的10个随机数,我们可以在程序框图中添加时间延迟控件。它位于函数→编程 →定时→时间延迟,如图:

7. 放置它到程序框图上,选择延迟的时间,即两次循环之间的时间间隔。如图:

8. 将时间设置为1.000,点击确定即可,再运行程序就可从前面板上看到所产生的随机数了。

移位寄存器

移位寄存器用于For循环或While循环中从一个迭代传输数据到下一个迭代,它由循环垂直边框上一对反向相反的端子组成,在边框上单击右键,选择添加移位寄存器,就可进行添加。如图:

右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向下箭头的矩形)上。移位寄存器可存储任何数据类型,包括数字,布尔,字符串和数组,但连接到同一个寄存器端子上的数据必须是同一类型。移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。

下面是1+2+3+4+…+100的程序,如图:

说明:进行第一次运算的是0+0,For循环中的重复端子是从0开始计数,移位即寄存器在没有初始化的情况下,默认的数值是0,所以第一次运算的是0+0,第二次运算的是寄存器的0与重复端子的1相加,所以循环要进行101次。而计数端子输出的数据始终是101。
移位寄存器的初始化:移位寄存器的初始化是非常必要的,因为只要用户不退出VI,移位寄存器便可记录上次运算完时的结果,所以上面的程序在第二次执行时输出的结果不是5050,而是10100!添加初始化即可,如图:

下面在举几个复杂一点的例子。

例一:计算一组随机数的最大值和最小值

  1. 新建一个VI,在前面板上放置一个波形图标,它位于新式→图形→波形图表,用它来记录产生的随机数。同时在前面板上放置两个数值显示控件“最大值”和“最小值”,用来显示随机数中的最大值和最小值。
  2. 在程序框图中,放置一个For循环,设置循环次数为50次。单击边框选择添加两个移位寄存器,分别初始化为0和1。
  3. 放置随机数函数和最大最小值函数与程序框图中,其中最大最小值函数位于编程→比较→最大值与最小值。然后连线。如图:

运行,便可在前面板上看到结果,如图:

例二:计算

  1. 在前面板上放置一个数值输入控件“阶次n”和一个数值显示控件“求和结果”
  2. 在程序框图上放置两个For循环嵌套结构,外层循环的计数端口与“阶次n”连接,输出是各个数的阶乘所组成的一个数组。它的重复端子加1作为内层循环的循环次数,内层循环利用一个移位寄存器实现阶乘运算,移位寄存器的初始值设为1。
  3. 同样在程序框图的右边在放置一个For循环结构,它的计数端子没有任何连接数据,使用的是自动索引功能。这个循环的作用是对由阶乘所组成的一个数组进行索引,对索引出的各个元素进行求和计算,最后将计算结果输出给“求和结果”。
  4. 完成连线,如图:

运行结果如图:

例三:计算自然对数中底数e的近似值。

算法:

步骤:

  1. 新建一个VI,打开前面板,添加两个数字显示控件,分别表示”近似值e”和“临界阶次N”。
  2. 切换到程序框图,放置一个While循环,将条件端子的条件改为“真时停止”。在它内部再放置一个For循环,计数端子与While循环结构的重复端子加1后连接。右击For循环边框,添加移位寄存器,并初始化为1,For循环结构的功能是计算各个数的阶乘。
  3. 计算各个数阶乘的倒数,添加倒数函数,它位于函数→编程→数值→倒数。
  4. 添加比较函数,将它的阶乘的倒数与10^-5比较,比较结果连接到While循环结构的条件端子上,如果小于则返回“真”,停止循环,否则返回“假”继续循环。
  5. 由于While循环默认的是不能够自动索引功能,而程序中需要累加保存每次计算的阶乘,这就需要在输出通道上选择“启用索引”,实现自动索引,将各个元素累加成为一维数组。
  6. 在程序框图右边再添加一个For循环,它的功能是进行自动索引求和,需要主机的是它的移位寄存器被初始化为1,这是由近似算法所决定的。将输出结果送给“近似值e”。
  7. 完成连线,并运行程序。如图:

运行结果,如图:

例四:实现对随机数进行平滑滤波。通过对4个连续的随机数求其平均值来实现。

  1. 新建一个VI,在前面板上放置两个波形图表,一个为“原始波形”,一个为“滤波后波形”。
  2. 在程序框图上放置一个While循环,在边框添加一个移位寄存器,然后在左边的寄存器上单击右键,选择“添加元素”,一共添加3个。如图:
  3. 添加随机数产生函数,并添加符合运算,将连续产生的4个随机数相加,相加的结果除以4。
  4. 放置循环定时函数,定义循环时间为100ms。
  5. 完成连线,在While循环的条件端子处添加输入控件。如图:

运行结果:

labview循环-移位寄存器妙用相关推荐

  1. LabVIEW的移位寄存器

    在循环结构中经常用到一种数据处理方式,即把第i次循环执行的结果作为第i+1次循环的输入,LabVIEW循环结构中的移位寄存器可以实现这种功能.在循环结构框左侧或右侧边框单击鼠标右键,在弹出的快捷菜单中 ...

  2. LabVIEW使用移位寄存器计算平均值

    本篇博文分享一种有趣的LabVIEW编程思维:使用移位寄存器计算平均值. 移位寄存器是LabVIEW循环结构中很常用的一个小技巧,选中while循环框体,右击边框即可创建添加移位寄存器,如下图所示: ...

  3. 鸡兔同笼问题(for循环的妙用)

    鸡兔同笼问题(for循环的妙用) 题目描述 for循环语法 解题思路 题目描述 已知鸡的数量为n只,兔的数量为m只,鸡兔的总头数为H个鸡兔的总脚数为Y只 for循环语法 for(表达式1:表达式2:表 ...

  4. LabVIEW循环结构之移位寄存器

  5. labview关于移位寄存器的使用

    1:当引用通过for循环的时候,必须使用移位寄存器对引用进行连接,因为当for循环次数为0的时候,如果连接引用的是隧道,就会导致引用的打断,以至于后续的引用无效. 2:将一个数组中符合某一条件的数取出 ...

  6. L1-058 6翻了 (15 分)循环的妙用

    L1-058 6翻了 题目 代码 题目 L1-058 6翻了 (15 分) "666"是一种网络用语,大概是表示某人很厉害.我们很佩服的意思.最近又衍生出另一个数字"9& ...

  7. labview中移位寄存器使用的注意事项

    每个软件都存在很多默认设置,在labview使用中,寄存器的初始化和非初始化都有自己的用途.不过建议对寄存器进行初始化,不然执行结束后,还会用上次的输入值(变化值)进行计算,而不是一个固定值.

  8. Labview循环结构创建数组的例子

    创建数组过程中可能会出现很多重复的内容,所以,大多时候可以利用循环结构来创建数组.下面通过生成100以内的随机整数创建一个4×4的二维数组.可按照以下步骤进行. 步骤一 创建一个VI,在程序框图中添加 ...

  9. PHP编程----for循环的妙用

    for 循环是 PHP 中最复杂的循环结构.它的行为和 C 语言的相似. for 循环的语法是: for (expr1; expr2; expr3) statement 第一个表达式(expr1)在循 ...

最新文章

  1. 【转】MATLAB如何制作动画(动态图形演示movie)
  2. 为什么你学C++就那么难?
  3. Python数据结构学习笔记——链表:无序链表和有序链表
  4. beego orm 删除不掉数据!!!
  5. 一招明白URL和URI的区别
  6. 前端人英语学习的那点事儿
  7. FPGA常用FIFO简介
  8. Latex学习记录2
  9. rhel修改hostname_RHEL7 -- 修改主机名
  10. linux命令--vi,vim
  11. React Native(四)——顶部以及底部导航栏实现方式
  12. [hystar整理]Entity Framework 教程
  13. 通过百度地图批量查询经纬度/通过经纬度批量查询县市
  14. [翻译]Templates in WPF
  15. php 判断中文和英文,php如何判断是中文还是英文
  16. 尝试解析DDS格式纹理文件的基本信息(不包括图像数据)
  17. MySQL基础学习(三)————SQL语句的常用操作
  18. laravel中外部定义whereIn的用法和where中使用in
  19. gc System.gc() fullGC
  20. 《七哥说道》第三章:志远淋雨怒辞职,误入保险黄老萍

热门文章

  1. bigrats-go——硕鼠Linux版(Bigrats for Linux)
  2. 传音控股上半年营收231亿:扣非后净利14亿 同比降7%
  3. __attribute__作用
  4. oracle更改system表空间大小,收缩system表空间大小
  5. 我的lamp兄弟连生活
  6. 光机电一体化综合实训系统
  7. 【源码分享】京东商品评价的爬虫
  8. 交通部 城轨交通运营管理规定_《城市轨道交通运营安全风险分级管控和隐患排查治理管理办法》政策解读...
  9. qq客服在线和msn客服在线代码
  10. MEF:COA-NET