cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
楼主: baby

第四讲 程序结构---循环结构

[复制链接]
 楼主| 发表于 2009-2-9 11:34:01 | 显示全部楼层
8. 将时间设置为1.000,点击确定即可,再运行程序就可从前面板上看到所产生的随机数了。


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:34:30 | 显示全部楼层
右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向下箭头的矩形)上。移位寄存器可存储任何数据类型,包括数字,布尔,字符串和数组,但连接到同一个寄存器端子上的数据必须是同一类型。移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:34:55 | 显示全部楼层
下面是1+2+3+4+…+100的程序,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:35:28 | 显示全部楼层
说明:进行第一次运算的是0+0,For循环中的重复端子是从0开始计数,移位即寄存器在没有初始化的情况下,默认的数值是0,所以第一次运算的是0+0,第二次运算的是寄存器的0与重复端子的1相加,所以循环要进行101次。

而计数端子输出的数据始终是101。
移位寄存器的初始化:移位寄存器的初始化是非常必要的,因为只要用户不退出VI,移位寄存器便可记录上次运算完时的结果,所以上面的程序在第二次执行时输出的结果不是5050,而是10100!添加初始化即可,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:35:54 | 显示全部楼层
下面在举几个复杂一点的例子:
例一:计算一组随机数的最大值和最小值
1.
新建一个VI,在前面板上放置一个波形图标,它位于新式→图形→波形图表,用它来记录产生的随机数。同时在前面板上放置两个数值显示控件“最大值”和“最小值”,用来显示随机数中的最大值和最小值。
2.
在程序框图中,放置一个For循环,设置循环次数为50次。单击边框选择添加两个移位寄存器,分别初始化为0和1。
3.

放置随机数函数和最大最小值函数与程序框图中,其中最大最小值函数位于编程→比较→最大值与最小值。然后连线。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:36:18 | 显示全部楼层
运行,便可在前面板上看到结果,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:36:53 | 显示全部楼层
例二:计算



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:39:59 | 显示全部楼层
例三:计算自然对数中底数e的近似值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:40:29 | 显示全部楼层
1.添加比较函数,将它的阶乘的倒数与10^-5比较,比较结果连接到While循环结构的条件端子上,如果小于则返回“真”,停止循环,否则返回“假”继续循环。
2.由于While循环默认的是不能够自动索引功能,而程序中需要累加保存每次计算的阶乘,这就需要在输出通道上选择“启用索引”,实现自动索引,将各个元素累加成为一维数组。
3.在程序框图右边再添加一个For循环,它的功能是进行自动索引求和,需要主机的是它的移位寄存器被初始化为1,这是由近似算法所决定的。将输出结果送给“近似值e”。
4.完成连线,并运行程序。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:41:06 | 显示全部楼层
例四:实现对随机数进行平滑滤波。通过对4个连续的随机数求其平均值来实现。
1.新建一个VI,在前面板上放置两个波形图表,一个为“原始波形”,一个为“滤波后波形”。
2.在程序框图上放置一个While循环,在边框添加一个移位寄存器,然后在左边的寄存器上单击右键,选择“添加元素”,一共添加3个。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-9 11:41:54 | 显示全部楼层
3.添加随机数产生函数,并添加符合运算,将连续产生的4个随机数相加,相加的结果除以4。
4.放置循环定时函数,定义循环时间为100ms。
5.
完成连线,在While循环的条件端子处添加输入控件。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-2-9 21:30:47 | 显示全部楼层
哥们儿,我来顶你。
发表于 2009-2-11 22:35:36 | 显示全部楼层
很适合刚入门的兄弟,斑竹写了这么多,辛苦了。
 楼主| 发表于 2009-2-16 21:34:43 | 显示全部楼层


本人非班主。一起学。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-5 06:48 , Processed in 1.120150 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表