當前位置:編程學習大全網 - 源碼破解 - labview 怎樣讓內循環產生壹維數組,外循環使其不停止

labview 怎樣讓內循環產生壹維數組,外循環使其不停止

在LabVIEW的G語言中,循環表現為壹個框框。數據進入循環會有壹個所謂的“隧道”,數據離開循環也要經過“隧道”。隧道的表現形式為循環框上的壹個小方塊。而隧道還可以配置為不同的模式,如下圖所示:

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

從上圖看以看出,隧道有三種模式:最終值、索引、連接。配置不同的隧道模式,可以讓循環擁有不同的功能。索引模式的隧道表現為循環框上壹個裏面有壹對中括號[]的小方框,最終值模式的隧道表現為實心的小方框。

索引模式有什麽用呢?

如果輸入循環的數據為壹個1D數組,經過索引模式的隧道後的數據流就成了壹個標量,此時循環的作用為:用循環框內的框圖處理數組中的每壹個元素,這種感覺有點類似於MATLAB的arrayfun和Python的map,不同的是,我們可以在循環裏使用移位寄存器來實現壹個叠代的運算。輸出端就是反過來的效果;

如果輸入循環的數據為壹個2D數組,經過索引模式的隧道後的數據流就成了壹個1D數組,循環每次處理2D數組的壹行(或是壹列,我還沒有查清楚LabVIEW是Column-major還是Row-major)。輸出端就是反過來的效果。

這次我們用循環實現了壹個Mandelbrot圖形的計算。在《xialulee大戰pythonchallenge——level31》中,我們用Matlab實現了計算過程。這裏我們利用LabVIEW的G語言實現其核心的叠代算法,至於初始數據的構造,還是偷懶使用了MATLAB節點。完整的程序如下:

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

上圖的程序中,算法部分嵌套了三層循環。最外層的循環用來把輸入的初始矩陣拆成壹個壹個的1D數組,中層的循環用來把1D數組拆成壹個壹個的標量,在最內層則是叠代算法,實現的計算如下所示:

z = 0

for k in range(128):

z = z * z + input

if abs(z) > 2:

break

然後輸出k。

算法中的叠代表達式(z = z * z + input)是用移位寄存器實現的,就是循環框上面分立左右的兩個帶有小三角形的方框。

  • 上一篇:lol大嘴怎麽玩?
  • 下一篇:接電話時壹般應在電話
  • copyright 2024編程學習大全網