新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 學習LabVIEW(八)——用循環處理數組

        學習LabVIEW(八)——用循環處理數組

        作者: 時間:2017-01-09 來源:網絡 收藏
        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)是用移位寄存器實現的,就是循環框上面分立左右的兩個帶有小三角形的方框。
        程序的數據流的終點是一個強度圖控件。下面是程序運行的結果:


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宣武区| 襄垣县| 胶南市| 泾川县| 资阳市| 兴国县| 前郭尔| 玛多县| 红安县| 新竹市| 湖南省| 崇左市| 东城区| 满洲里市| 纳雍县| 华池县| 金秀| 莫力| 西乌珠穆沁旗| 营山县| 弋阳县| 乌海市| 宜君县| 榕江县| 上杭县| 乌苏市| 鄢陵县| 台中县| 海淀区| 恩施市| 景宁| 平度市| 措美县| 巴彦县| 东莞市| 聂荣县| 右玉县| 泰顺县| 周口市| 栾川县| 稻城县|