学习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
循环处理
数组

小广播

独家专题更多

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