在LabVIEW的G语言中,循环表现为一个框框。数据进入循环会有一个所谓的隧道,数据离开循环也要经过隧道。隧道的表现形式为循环框上的一个小
在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)是用移位寄存器完成的,便是循环框上面分立左右的两个带有小三角形的方框。
程序的数据流的结尾是一个强度图控件。下面是程序运转的成果:
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/211839.html