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.

LabVIEW 陣列說明

綜覽

本文深入探討陣列與叢集資料型別,並且說明建立和操作陣列與叢集的方式。

 

由元素與維度組成的叢集可為控制項或指示元件,但不可同時包含兩者。元素是陣列中包含的資料或值。維度即是陣列的長度、高度或深度。在您處理類似資料的集合,以及想要儲存重複計算的歷史記錄時,陣列是相當實用的工具。

 

陣列的元素均已排定順序。陣列中的每個元素都有 1 個對應的索引值,您可以使用陣列索引來存取該陣列中的特定元素。在 NI LabVIEW 軟體中,陣列索引從零開始。這意味著,如果一維 (1D) 陣列包含 n 個元素,則索引範圍為 0 到 n – 1;其中索引 0 指向陣列中第 1 個元素,而索引 n – 1 則指向陣列中最後 1 個元素。

 

叢集可集中混合型態的資料元素。LabVIEW 錯誤叢集即屬叢集的範例之一,包含 1 個布林值、數值與字串。叢集近似於純文字程式語言中的記錄或架構。

 

與陣列類似的是,叢集可為控制項或指示元件,但不可同時包含兩者。叢集和陣列之間的區別,在於特定叢集具有固定大小,其中特定陣列的大小可能不同。此外,叢集可以包含混合資料型態,但是陣列只能包含一種資料型態。

內容

建立陣列控制指示元件

要在 LabVIEW 中建立陣列,必須在人機介面上放置 1 個陣列框,接著在陣列框中放置 1 個元素,如數字、布林值,或波形控制項、指示元件。

  1. 建立新的 VI。
  2. 用右鍵點選人機介面以顯示 Controls (控制項) 面板。
  3. Controls (控制項) 面板上,查看 Modern»Array, Matrix, & Cluster (現代»陣列、矩陣 & 叢集),然後將 Array (陣列) 框拖曳至人機介面。

  1. Controls (控制項) 面板上,查看 Modern»Numeric (現代» 數值),並將數字指示元件拖放到 Array (陣列) 框內。

  1. 將滑鼠放在陣列上,並拖曳陣列右側加以展開,以顯示多個元素。

按照前面的步驟,即可建立 1 個 1D 陣列。2D 陣列會將元素儲存於格線或矩陣中。2D 陣列中的每個元素都有 2 個對應的索引值,即列索引和行索引。同理,與 1D 陣列一樣,2D 陣列的列與行索引也是從零開始。

 

要建立 2D 陣列,首先必須先建立 1D 陣列,然後為其新增維度。返回先前建立的 1D 陣列。

  1.  在人機介面上,用右鍵點選索引顯示,然後從捷徑功能表中選取 Add Dimension (新增維度)。

  1.  將滑鼠放在陣列上並拖曳陣列邊角加以展開,以顯示多個列與行。

到目前為止,您建立的陣列數字元素已經變為零並反白。當陣列元素反白,代表該元素尚未初始化。要初始化某個元件,請在元素內按一下,然後使用所選數字替換反白的 0。

您可以將元素初始化為所選的任何值。這些值無須與上面顯示的值相同。

建立陣列常數

您可透過陣列常數儲存常數資料,或將陣列常數做為與其他陣列比較的基礎。

  1.  在程式圖上,點選右鍵以顯示 Functions (函式) 面板。
  2. Functions (函式) 面板上,查看 Programming»Array (程式 » 陣列),然後將 Array Constant (陣列常數) 拖曳至程式方塊圖。

  1.  在 Functions (函式) 面板上,查看 Programming»Numeric (程式 » 數值),並將 Numeric Constant (數值常數) 拖放到 Array Constant (陣列常數) 框中。

  1. 調整陣列常數大小,並初始化一些元素。


陣列輸入/輸出

如果您連接陣列以做為 for 迴圈的輸入,可藉助 LabVIEW 提供的選項,使用自動索引功能將 for 迴圈的計數接點自動設為陣列大小。您可以用右鍵點選連接到陣列的迴圈通道,並選取「Enable Indexing」(啟用索引) 或「Disable Indexing」(停用索引),以啟用或停用「Auto-Indexing」(自動索引) 選項。

如果啟用了自動索引,則 For 迴圈的每次反覆運算都將傳遞至陣列的相應元素。

將值連接為 For 迴圈的輸出時,啟用自動索引會輸出 1 個陣列。該陣列與 for 迴圈執行的反覆運算數量相同,並包含 for 迴圈的輸出值。

  1. 建立新的 VI。查看 File»New VI (檔案 » 新 VI)。
  2. 在程式方塊圖上建立並初始化 2 個 1D 陣列常數 (包含 6 個數字元素),如下列所示的陣列常數。

  1. 在人機介面上建立 1D 數字指示元件陣列。將數字類型變更為 32 位元整數。用右鍵點選陣列,然後選取 Representation»I32 (表示法 » I32)。

  1. 在程式方塊圖上建立 1 個 For 迴圈,並在 For 迴圈中放置 1 個 add 函式。
  2. 將其中 1 個陣列常數連接到 For 迴圈,然後將後者連接到 add 函式的 x 接點。

  1.  將其他陣列常數連接到 For 迴圈,然後將後者連接到 add 函式的 y 接點。

  1. 將 add 函式的輸出接點連接到 For 迴圈外部,然後將後者連接到數字指示元件陣列的輸入接點。

  1. 您的最終程式方塊圖和人機介面,應類似於下列所示。

  圖 - 最終程式方塊圖

程式方塊圖

GUI - 人機介面

人機介面

  1. 前往人機介面並執行 VI。請注意,數字指示元件陣列中的每個元素,都填入了 2 個陣列常數中相應的元素總和。

GUI - 人機介面

請注意,如果在 1 個以上的迴圈通道上啟用自動索引,並連接 For 迴圈計數接點,則反覆運算次數等於較小的選擇。例如,在下圖中,For 迴圈計數接點設為執行 15 次反覆運算,Array 1 包含 10 個元素,而 Array 2 則包含 20 個元素。如果執行下圖中的 VI,則 For 迴圈會執行 10 次,Array Result 則會包含 10 個元素。不妨動手試試,親自體會一下。

您可以使用巢狀 for 迴圈和自動索引,建立 1 個 2D 陣列,如下所示。這時外部的 For 迴圈會建立「列」(row) 元素,而內部的 For 迴圈則會建立「行」(column) 元素。

程式方塊圖 - 使用巢狀 For 迴圈與自動檢索的 2D 陣列

建立叢集

  1.  建立新的 VI。
  2.  用右鍵點選人機介面以顯示 Controls (控制項) 面板。
  3.  在 Controls (控制項) 面板上,查看 Modern»Array, Matrix, & Cluster (現代 » 陣列、矩陣 & 叢集),然後將 Cluster (叢集) 框拖曳至人機介面。

 

  1. 調整 Cluster (叢集) 框大小,使其能夠容納多個元素。

 

>

  1.  在 Controls (控制項) 面板上,查看 Modern»Numeric (現代 » 數值),並將數字控制項拖放到 Cluster (叢集) 框內。

  1. Controls (控制項) 面板上,查看 Modern»String & Path (現代 » 字串 & 路徑) 並將 String Control (字串控制項) 拖放到 Cluster (叢集) 框內。

  1. Controls (控制項) 面板上,查看 Modern»Boolean (現代 » 布林) 並將 Vertical Toggle Switch (垂直開關) 拖放到 Cluster (叢集) 框內。

  1. 現在,您的叢集看起來應類似於下方所示。

GUI - 最終叢集

現在,您可以使用 1 條線 (而不是 3 條),在程式方塊圖內串接數字、字串和布林控制項。

建立常數

就像陣列常數一樣,您可透過叢集常數儲存常數資料,或將叢集常數做為其他叢集的比較基礎。建立叢集常數時,可以依照先前建立陣列常數的相同步驟進行。

如果您已有叢集控制項或指示元件,並想要建立包含相同資料型態的叢集常數,請在程式方塊圖上建立叢集控制項或指示元件的副本,然後用右鍵點選該副本,並從捷徑功能表中選取 Change to Constant (變更為常數)。

GUI - 功能表變更為常數

函式

本線上課程將檢視經常用於操作叢集的 4 個主要叢集函式。這些函式分別是 BundleUnbundleBundle By NameUnbundle By Name

Bundle 函式可用來將個別元素組成叢集。若要將元素連接到 Bundle 函式,請使用滑鼠調整函式大小,或用右鍵點選該函式,然後從捷徑功能表中選取 Add Input (新增輸入)。

Bundle By NameBundle 函式可用來修改現有叢集。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 函式在修改現有叢集時非常實用GUI - Bundle By Name 函式在修改現有叢集時非常實用

 

但是,如果您使用 Bundle By Name 函式修改叢集,則函式接點會顯示元素標籤,方便您知道哪個接點修改了「String 1」,而修改了「String 2」的接點又是哪一個。

圖 - Bundle By NameGUI - Bundle By Name 輸出叢集

Unbundle 函式可用來將叢集解構為個別元素。Unbundle by Name 函式可依據名稱,將您指定的叢集解構為特定元素。您也可以仿效 BundleBundle By Name 函式的做法,因應多個元素的需要來調整這些函式大小。

 

順序

叢集元素具有的邏輯順序,與其在叢集框中的位置無關。放置在叢集中的第 1 個物件為元素 0,第 2 個物件則是元素 1,依此類推。如果刪除任一元素,順序會自動調整。這些元素會以接點形式顯示在程式圖上的 BundleUnbundle 函式,而叢集順序則決定了其顯示順序。您可以用右鍵點選叢集邊框,然後從捷徑功能表中選取 Reorder Controls In Cluster (在叢集中重新排序控制項),以檢視並修改叢集順序。

GUI - Cluster.vi 人機介面

每個元素上的白框,顯示其目前在叢集順序中的位置。元素在叢集順序中的新位置,則以黑框顯示。若要設定叢集元素的順序,請在 Click to set to (按一下以設定) 文字框中輸入新的順序編號,然後點選元素。這時元素的叢集順序會出現變化,而其他元素的叢集順序則會自動調整。點選工具列上的 Confirm (確認) 按鈕,儲存變更。點選 Cancel (取消) 按鈕,回復為原本順序。 

Was this information helpful?

Yes

No