From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
本文深入探討陣列與叢集資料型別,並且說明建立和操作陣列與叢集的方式。
由元素與維度組成的叢集可為控制項或指示元件,但不可同時包含兩者。元素是陣列中包含的資料或值。維度即是陣列的長度、高度或深度。在您處理類似資料的集合,以及想要儲存重複計算的歷史記錄時,陣列是相當實用的工具。
陣列的元素均已排定順序。陣列中的每個元素都有 1 個對應的索引值,您可以使用陣列索引來存取該陣列中的特定元素。在 NI LabVIEW 軟體中,陣列索引從零開始。這意味著,如果一維 (1D) 陣列包含 n 個元素,則索引範圍為 0 到 n – 1;其中索引 0 指向陣列中第 1 個元素,而索引 n – 1 則指向陣列中最後 1 個元素。
叢集可集中混合型態的資料元素。LabVIEW 錯誤叢集即屬叢集的範例之一,包含 1 個布林值、數值與字串。叢集近似於純文字程式語言中的記錄或架構。
與陣列類似的是,叢集可為控制項或指示元件,但不可同時包含兩者。叢集和陣列之間的區別,在於特定叢集具有固定大小,其中特定陣列的大小可能不同。此外,叢集可以包含混合資料型態,但是陣列只能包含一種資料型態。
要在 LabVIEW 中建立陣列,必須在人機介面上放置 1 個陣列框,接著在陣列框中放置 1 個元素,如數字、布林值,或波形控制項、指示元件。
按照前面的步驟,即可建立 1 個 1D 陣列。2D 陣列會將元素儲存於格線或矩陣中。2D 陣列中的每個元素都有 2 個對應的索引值,即列索引和行索引。同理,與 1D 陣列一樣,2D 陣列的列與行索引也是從零開始。
要建立 2D 陣列,首先必須先建立 1D 陣列,然後為其新增維度。返回先前建立的 1D 陣列。
到目前為止,您建立的陣列數字元素已經變為零並反白。當陣列元素反白,代表該元素尚未初始化。要初始化某個元件,請在元素內按一下,然後使用所選數字替換反白的 0。
您可以將元素初始化為所選的任何值。這些值無須與上面顯示的值相同。
您可透過陣列常數儲存常數資料,或將陣列常數做為與其他陣列比較的基礎。
如果您連接陣列以做為 for 迴圈的輸入,可藉助 LabVIEW 提供的選項,使用自動索引功能將 for 迴圈的計數接點自動設為陣列大小。您可以用右鍵點選連接到陣列的迴圈通道,並選取「Enable Indexing」(啟用索引) 或「Disable Indexing」(停用索引),以啟用或停用「Auto-Indexing」(自動索引) 選項。
如果啟用了自動索引,則 For 迴圈的每次反覆運算都將傳遞至陣列的相應元素。
將值連接為 For 迴圈的輸出時,啟用自動索引會輸出 1 個陣列。該陣列與 for 迴圈執行的反覆運算數量相同,並包含 for 迴圈的輸出值。
程式方塊圖
人機介面
請注意,如果在 1 個以上的迴圈通道上啟用自動索引,並連接 For 迴圈計數接點,則反覆運算次數等於較小的選擇。例如,在下圖中,For 迴圈計數接點設為執行 15 次反覆運算,Array 1 包含 10 個元素,而 Array 2 則包含 20 個元素。如果執行下圖中的 VI,則 For 迴圈會執行 10 次,Array Result 則會包含 10 個元素。不妨動手試試,親自體會一下。
您可以使用巢狀 for 迴圈和自動索引,建立 1 個 2D 陣列,如下所示。這時外部的 For 迴圈會建立「列」(row) 元素,而內部的 For 迴圈則會建立「行」(column) 元素。
>
現在,您可以使用 1 條線 (而不是 3 條),在程式方塊圖內串接數字、字串和布林控制項。
就像陣列常數一樣,您可透過叢集常數儲存常數資料,或將叢集常數做為其他叢集的比較基礎。建立叢集常數時,可以依照先前建立陣列常數的相同步驟進行。
如果您已有叢集控制項或指示元件,並想要建立包含相同資料型態的叢集常數,請在程式方塊圖上建立叢集控制項或指示元件的副本,然後用右鍵點選該副本,並從捷徑功能表中選取 Change to Constant (變更為常數)。
本線上課程將檢視經常用於操作叢集的 4 個主要叢集函式。這些函式分別是 Bundle、Unbundle、Bundle By Name 與 Unbundle By Name。
Bundle 函式可用來將個別元素組成叢集。若要將元素連接到 Bundle 函式,請使用滑鼠調整函式大小,或用右鍵點選該函式,然後從捷徑功能表中選取 Add Input (新增輸入)。
Bundle By Name 或 Bundle 函式可用來修改現有叢集。Bundle By Name 函式大小的調整方式,與 Bundle 函式相同。
需要修改現有叢集時,Bundle By Name 函式非常實用,因為它可以讓您確切知道,需要修改的是哪一個叢集元素。例如,在考慮要修改的叢集內,包含 2 個分別標記為「String 1」和「String 2」的字串元素。如果您使用 Bundle 函式修改叢集,則該函式接點會顯示為粉紅色 abc。這時,您並不知道哪個接點修改了「String 1」,而修改了「String 2」的接點又是哪一個。
但是,如果您使用 Bundle By Name 函式修改叢集,則函式接點會顯示元素標籤,方便您知道哪個接點修改了「String 1」,而修改了「String 2」的接點又是哪一個。
Unbundle 函式可用來將叢集解構為個別元素。Unbundle by Name 函式可依據名稱,將您指定的叢集解構為特定元素。您也可以仿效 Bundle 與 Bundle By Name 函式的做法,因應多個元素的需要來調整這些函式大小。
叢集元素具有的邏輯順序,與其在叢集框中的位置無關。放置在叢集中的第 1 個物件為元素 0,第 2 個物件則是元素 1,依此類推。如果刪除任一元素,順序會自動調整。這些元素會以接點形式顯示在程式圖上的 Bundle 與 Unbundle 函式,而叢集順序則決定了其顯示順序。您可以用右鍵點選叢集邊框,然後從捷徑功能表中選取 Reorder Controls In Cluster (在叢集中重新排序控制項),以檢視並修改叢集順序。
每個元素上的白框,顯示其目前在叢集順序中的位置。元素在叢集順序中的新位置,則以黑框顯示。若要設定叢集元素的順序,請在 Click to set to (按一下以設定) 文字框中輸入新的順序編號,然後點選元素。這時元素的叢集順序會出現變化,而其他元素的叢集順序則會自動調整。點選工具列上的 Confirm (確認) 按鈕,儲存變更。點選 Cancel (取消) 按鈕,回復為原本順序。