Upload
vucong
View
228
Download
0
Embed Size (px)
Citation preview
陣列乃是相同資料型態的集結物件,如數值、布林值、字串。使用陣列,最大的好處在於資料的收集與處理。本章節將要介紹陣列物件之運用,包括陣列之大小、建立及索引,簡單介紹陣列的操作方式、使用技巧、以及一些陣列的運算
何謂陣列 ?
陣列( Array )是相同形式數據資料的集合。在記憶體容許的情況下,陣列可為一維或多維,每維至多有 231- 1個元素。在 LabVIEW中,陣列可為多種型式。在陣列中,透過索引可以找到元素所在的位置,索引值由 0 開始計算,其範圍是由 0 至 n - 1 ,其中 n 是陣列中元素的數目。下表顯示為一個一維陣列,注意元素第一個索引值為 0,第二個為 1,依此類推。
自動索引建立陣列 For Loop 與 While Loop 能在其迴圈範圍內自動建立陣列,稱為自動索引( a
uto-indexing )。圖 7-5 為一個自動索引的陣列。其中每執行一次迴圈便產生一個元素,待迴圈結束後,則將整個陣列一起傳送出迴圈。請注意傳遞資料的連線自迴圈邊界開始變粗,因為這條傳輸線的資料型態是一維陣列(即粗線表示陣列輸出輸入,數值為細線)。
建立二維陣列 一個二維陣列需要兩個索引值定義元素,其中一個為欄指標(直),一個為
行指標(橫),二者的起始值均為 0 。圖 7-9 顯示為一個六欄四行的二維陣列,共包含 6×4 = 24 個元素。
要建立二維陣列一定要增加索引值,也就是在索引項拉出隨機式選單,選取加維( Add Dimension ),圖 7-10 顯示欄與行的索引值。
自動索引決定 For 迴圈執行次數 當一個陣列進入一個 For Loop ,使用自動索引, LabVIEW會自動判斷是否以
陣列的大小決定迴圈執行的次數。由陣列的大小與迴圈執行次數N去比較大小,迴圈執行次數以數目小的為準。以圖 7-12 為例,決定迴圈的執行次數,為陣列的大小,而非 N值,因為陣列的大小較小。
初始陣列( Initialize Array ) 此函數是建立一新的陣列,且設定此陣列內容的起始值。
建立陣列( Build Array ) 此函數可以結合: (a) 兩個以上的元素成為一個一維陣列, (B) 兩個以上的
一維陣列組合成一維或二維陣列,取決於隨機選單中的組合輸入項目( Concatenate Inputs )是否被勾選。
1.Array Size (陣列大小) :本物件可判斷一陣列中有多少行數與列數。本物件之介紹可以圖 5-1-1 為例,從路徑Functions > Array > Array Size ,點選一陣列大小物件 。
圖 5-1-1 陣列大小物件
2.Index Array (陣列值索引) :本物件可藉由所輸入的行數與列數之值,在陣列中找出相對應位置上之值。首先從路徑 Functions > Array > Index Array ,點選一陣列值索引物件,吾人可仿造前例並完成如圖 5-1-2程式,程式執行後,就會將所輸入行數及列數的數值,由陣列輸出顯示物件處顯示所尋找到的值。
圖 5-1-2 陣列值索引物件
3.Replace Array Subset (陣列值置換) :本物件可替換輸入陣列中任一數值。首先從路徑 Functions > Array > Replace Array Subset ,點選一陣列值置換物件,吾人可仿造前例並完成如圖 5-1-3程式,程式執行後,就會將所指定的行數、列數之值以新的值加以替換,並在陣列輸出顯示物件處顯示替換後的陣列值。
圖 5-1-3 陣列值置換物件
4.Insert Into Array (陣列值插入) :本物件可插入數值至輸入陣列中。首先從路徑 Functions > Array > Insert Into Array,點選一陣列值插入物件,吾人可仿造前例並完成如圖 5-1-4 ,只要設定所要插入的行數、列數之索引值與插入值,程式執行後就會在陣列輸出顯示物件處顯示插入後新的陣列值。
圖 5-1-4 陣列值插入物件
5.Delete From Array (陣列值刪除) :本物件可刪除輸入陣列中的元素或次陣列。首先從路徑 Functions > Array > Delete From Array ,點選一陣列值刪除物件,吾人可仿造前例並完成如圖 5-1-5 ,程式執行後,就會依指定的行、列索引值刪除該元素,而後陣列輸出顯示物件就會顯示刪除後的新陣列。
圖 5-1-5 矩陣值刪除物件
6.Initialize Array (陣列初始化) :本物件可用以初始化一陣列。首先從路徑 Functions > Array > Initialize Array ,點選一陣列初始化物件,吾人可仿造前例並完成如圖 5-1-6 ,只要設定所要建立的行數、列數之大小與初始陣列的值,程式執行後就會在輸出顯示物件顯示所建立的陣列。
圖 5-1-6 初始值陣列物件
7.Build Array (陣列建立) :本物件可將輸入的各維數之陣列合併在一起,並產生一新的陣列。首先從路徑 Functions >Array > Build Array,點選一陣列建立物件,吾人可仿造前例並完成如圖 5-1-7 ,程式執行後,其輸入值就會在陣列輸出顯示物件處以陣列方式輸出 (本物件內定相同維度的陣列經建立後則以高一維度的陣列輸出表示,而不同維度的陣列經建立後則以輸入陣列的最高維度輸出,不同維度的陣列若欲予以建立,其維度只能相差一維,如有一 2×2陣列,那它只能和 3×3 或 1×1的陣列合併建立,元素的維度為 0) 。
8. Array Subset (取出子陣列) :本物件可從一陣列中,依指定的行列索引值及長度取出子陣列。首先從路徑 Functions> Array > Array Subset ,點選取出子陣列物件,並完成如圖5-1-8所示程式,程式執行後,程式將依所輸入的指定行列索引值及取出長度,自輸入陣列中取出子陣列
圖 5-1-8 取出子陣列
9.Rotate 1D Array (旋轉一維陣列) :本物件可將輸入陣列之元素做旋轉移位。首先從路徑 Functions > Array > Rotate 1D Array ,點選旋轉一維陣列物件,吾人可仿造前例並完成如圖5-1-9 ,程式執行後,會依所設定的移動量 n ,將最後一個數值往前 ( 後 )移動,輸入的值有正負之分,正 (往前 )負 (往後 ),最後在物件輸出處顯示旋轉後的新陣列值。
圖 5-1-9 旋轉一維陣列值物件
10.Reverse 1D Array (反向一維陣列) :本物件可將輸入的一維陣列前後顛倒重新排列。首先從路徑 Functions > Array > Reverse 1D Array ,點選反向一維陣列物件,吾人可仿造前例並完成如圖 5-1-10 ,程式執行後,會將所輸入的一維陣列值,顛倒排列,並在物件輸出處顯示顛倒排列後的結果。
圖 5-1-10 反向一維陣列物件
11.Search 1D Array (搜尋一維陣列) :本物件可從輸入陣列中搜尋指定元素是否存在及該元素存在陣列中之索引值。首先從路徑 Functions > Array > Search 1D Array ,點選搜尋一維陣列物件,吾人可仿造前例並完成如圖 5-1-11 ,程式執行後,就會將所要搜尋的元素,在物件輸出處顯示搜尋元素位於一維陣列中之索引值。
圖 5-1-11 搜尋一維陣列物件
12.Split 1D Array (分割一維陣列) :本物件可將一維陣列分割成兩個一維子陣列。先從路徑 Functions > Array > Split 1D Array ,點選分割一維陣列值物件,吾人可仿造前例完成如圖 5-1-12 ,程式執行後,程式將依所設定的 Index 值,將一維陣列分割成兩個一維子陣列。
圖 5-1-12 分割一維陣列物件
13.Sort 1D Array (排序一維陣列) :本物件可將輸入的一維陣列之元素,依其值大小由小到大重新排列輸出。首先從路徑 Functions > Array > Sort 1D Array ,點選排序一維陣列物件,吾人可仿造前例並完成如圖 5-1-13 ,程式執行後,程式將依所輸入的一維陣列中的元素,由小到大重新排列輸出。
圖 5-1-13 排序一維陣列物件
14.Array Max & Min (陣列最大最小值) :本物件將陣列中所有的元素數值做比較,再將最大值與最小值及其對應索引值輸出。首先從路徑 Functions > Array > Array Max & Min ,點選陣列最大最小值物件,吾人可仿造前例並完成如圖 5-1-14 ,程式執行後,程式將輸入陣列中所有的元素數值做比較,再輸出最大值與最小值,並且將最大值與最小值所在之索引值輸出。
15.Transpose 2D Array (二維陣列轉置) :本物件可將輸入的二維陣列做轉置。首先從路徑 Functions > Array > Transpose 2D Array ,點選二維陣列轉置物件,吾人可仿造前例並完成如圖 5-1-15 ,程式執行後,程式將輸入的二維陣列做轉置後輸出,即列的數值轉換成行的數值,行的數值轉換成列的數值。
3.因欲建立一 3×3 陣列,在外 For Loop 物件的 N 處按下滑鼠右鍵,並選擇 Create Constant ,產生輸入數 3 ,最後,再將內外 For Loop 的 N 處在連線模式下連線,如圖 5-2-3 所示。
圖 5-2-3 迴圈執行次數
4.產生行的數值,以 0-1間之亂數產生,點選 Functions > Numeric > Random Number (0-1) ,如圖 5-2-4 所示。
圖 5-2-4 Random Number (0-1)
5.將亂數值連線至暫存器上,並於 i處按滑鼠右鍵,點選 Create Indicator ,產生行的數值輸出物件欄,同上一步驟,在另一個迴圈產生列的數值輸出物件列如圖 5-2-5 所示。
圖 5-2-5 Create Indicator
6.為了使程式產生延遲,點選 Functions > Time & Dialog > Wait Until Next ms Multiple ,如圖 5-2-6 所示。
圖 5-2-6 Wait Until Next ms Multiple
8. 再於迴圈的最外層接點處,點滑鼠右鍵選擇 Creat Indicator ,並命名為 3x3 矩陣,再拉大前視面板上的 Array 元件成 3x3 的大小,則此程式便完成。
圖 5-2-8 3x3矩陣
(陣列對應元素相乘後總和) 1. 首先在前視板工作區按右鍵點選 Controls > Array & Cluster > Array 建立一陣列,如圖 5-2-15 所示。
圖 5-2-15 建立一陣列
2. 再點選 Controls > Numeric > Digital Control ,並拖曳至陣列中,如圖 5-2-16 及圖 5-2-17 所示。
圖 5-2-16 Digital Control 圖 5-2-17 放入陣列中
5.在方塊圖工作區中點選 Functions > Array > Array Size ,並置於 Array 與 For Loop 之間,如圖 5-2-21 及圖 5-2-22 所示。
圖 5-2-21 Array Size 圖 5-2-22 For Loop
6. 把線連接到 For Loop 的邊緣上,產生兩個自動索引器,並在兩個自動索引器上按右鍵,點選 Disable Indexing ,如圖 5-2-23 所示。
圖 5-2-23 Disable Indexing
(九九乘法表) 即國小時常背誦的九九乘法表。 1. 九九乘法為一二維陣列,其程式含有兩個次數迴圈控制, 每一個次數迴圈控制的次數恰好都為9,如圖 6-2-30 。
圖 6-2-30 設定次數迴圈控制及其次數
( 集結2的倍數或陣列 )將 1~ 100 中所有 2的倍數集結成一維陣列。 1.產生一個 For Loop 迴圈,因為 1~100 中 2 的倍數共有 50個,故迴圈次數定為( 100/2 )次,如圖 5-2-36 。
圖 5-2-36 設定迴圈
3. 多重型態 (Polymorphism)在 LabVIEW環境下,很多物件可同時處理不同的資料格式輸入,如純量、陣列等等。例如,在 LabVIEW環境下能把一個純量和一個陣列相加或者將兩個陣列加在一起,如下圖 5-3-1 所示多種型態相加。
純量與純量相加,所產生的結果是純量。純量與陣列相加,該純量將被加到陣列的每一個元素。陣列與陣列相加時陣列的每一個元素被加到另一陣列的相對應的元素中。陣列大小不一的相加結果僅對有匹配對應的元素做相加。表 5-3-1 整理了典型 LabVIEW 物件中能處理多重型態數據的物件。