Oct 31, 2010

LV: cluster operation

cluster最常用的就是bundle以及unbundle,建構與解構cluster
但盡可能用bundle/unbundle "by name"
clusterßàarray

cluster有時候會跟array很像,舉最簡單的例子是XY array的使用
你可以用1D cluster(X,Y) array,或是2D numeric array(1D-X +1D -Y)
以程式開發而言,cluster這樣複雜資料型態是比較便利,把相關的東西集合在一起,是比較直覺
但在計算上,簡單的資料型態會使運算較快,效率上較高
而且labview上的數值運算很少是接受cluster的input(除了參數設定以外)
所以cluster與array之間的轉換是很常遇到的
  • cluster to array: 把一個cluster轉成1D array(限定這個cluster只有同一種的資料:如全部都是數值)
  • array to cluster:把1D array轉成1個cluster(預設是9個元件,不過可以在array to cluster上按右鍵,選擇size, 這可以簡化不少工作,譬如說原本為了計算把一個含4個元件的cluster轉成array,但再轉成cluster後,卻無法用原本的cluster當indicator把資料接回來,這就是因為預設的9個元件cluster跟原本的cluster內容數目不對,而無法銜接)

cluster array
cluster當然可以成為array中的元素element,這裡的cluster可以是任何型式的,不管是一群numeric或是numeric array

  • index & bundle cluster array: 可以把好幾個1D array組合成1D cluster array,舉例來說X,Y的1D array,可以組合成1D-XY cluster array,其功能就如同for loop+bundle,但是效率更高

            不過,可惜的是,labview並沒有反向功能的vi,1D cluster array要拆開讓每一個cluster
            的element自己成為1D array還是要用到for loop+unbundle

  • Build cluster array:功能接近build array,是要讓同樣資料型態的cluster組合成cluster array,這樣的功能在畫XY  graph還蠻常使用的,multi-plot讓多筆資料秀在同一graph上,就需要cluster array,在這裡的cluster element本身就含有numeric array,讓array變成1個cluster可以用bundle,或是單一build cluster array,就可以把array轉換成一個cluster

cluster index
單一個cluster裡面有很多element,想要針對某一個element資料來讀取或寫入,用"bundle/unbundle by name"是最方便了,但是有時候的需求可能是要針對cluster裡的element某幾個來做program modify,就會需要像array index的功能,可是cluster看起來很像array,但是並沒有取index的vi,這時候就要用到往上一階的使用,用property node,藉由cluster的reference,取出control[]是cluster裡所有元件的control reference,這時候就如同cluster原本的排序(下段有敘述),就可以用array index取出所要的原件,再配上另一個property node的value,會輸出variant的資料型態(用variant to data就可以做到資料轉換)
cluster order
剛剛上段提到,cluster的順序,只要在cluster上按右鍵"Reorder control in cluster"就可以改cluster中的順序,這順序會與bundle/unbundle的順序有關(這也就是為什麼最好使用by name)

No comments:

Post a Comment