学习LabVIEW(八)——用循环处理数组

2015-08-19 11:43:37来源: eefocus
    在LabVIEW的G语言中,循环表现为一个框框。数据进入循环会有一个所谓的“隧道”,数据离开循环也要经过“隧道”。隧道的表现形式为循环框上的一个小方块。而隧道还可以配置为不同的模式,如下图所示:

从上图看以看出,隧道有三种模式:最终值、索引、连接。配置不同的隧道模式,可以让循环拥有不同的功能。索引模式的隧道表现为循环框上一个里面有一对中括号[]的小方框,最终值模式的隧道表现为实心的小方框。
    索引模式有什么用呢?
  • 如果输入循环的数据为一个1D数组,经过索引模式的隧道后的数据流就成了一个标量,此时循环的作用为:用循环框内的框图处理数组中的每一个元素,这种感觉有点类似于MATLAB的arrayfun和Python的map,不同的是,我们可以在循环里使用移位寄存器来实现一个迭代的运算。输出端就是反过来的效果;
  • 如果输入循环的数据为一个2D数组,经过索引模式的隧道后的数据流就成了一个1D数组,循环每次处理2D数组的一行(或是一列,我还没有查清楚LabVIEW是Column-major还是Row-major)。输出端就是反过来的效果。
    这次我们用循环实现了一个Mandelbrot图形的计算。在《xialulee大战pythonchallenge——level31》中,我们用Matlab实现了计算过程。这里我们利用LabVIEW的G语言实现其核心的迭代算法,至于初始数据的构造,还是偷懒使用了MATLAB节点。完整的程序如下:

上图的程序中,算法部分嵌套了三层循环。最外层的循环用来把输入的初始矩阵拆成一个一个的1D数组,中层的循环用来把1D数组拆成一个一个的标量,在最内层则是迭代算法,实现的计算如下所示:
z = 0
for k in range(128):
  z = z * z + input
  if abs(z) > 2:
    break
然后输出k。
    算法中的迭代表达式(z = z * z + input)是用移位寄存器实现的,就是循环框上面分立左右的两个带有小三角形的方框。
    程序的数据流的终点是一个强度图控件。下面是程序运行的结果:

关键字:LabVIEW  循环处理  数组

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0819/article_12839.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
循环处理
数组

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved