燒你的LabVIEW腦:22個看似例外但又符合邏輯的LabVIEW程式片段

  1. SurprisingDataValue.vi (6.9 KB)

ShiftVersusTunnels

20100503161442

No_Execute

  1. s.vi (7.3 KB)
    2019-03-02_01-20-12


image

image

image

image

image

image

image

image

image
image

image

image

file%20output

這個很有趣,部分可以解答一下原因。

  1. 數值相同是理所當然,轉成Row Data不同是因為兩邊的正負旗標不同

  2. 沒有透過register出來的reference,在for loop不執行時會輸出not a refnum

  3. increment 是透過U8進位運算,所以溢位會回到0,exp node是透過浮點運算,溢位則會維持資料型態的上下限,如256不會變成0而是255,-1不會變成255而是0

  4. 道理同上,此外enum只有存在列舉值域,所以透過inc的話three會變成one,但是透過exp node則是超過上限會維持在three

  5. 沒用過這個元件,不過這個method應該是取得設備的refnum,LabVIEW執行時判斷使用者未讀取,那跟整個Node沒運作是一樣的,所以優化的結果是不執行。但這只是個人猜測。

  6. 初始值問題,這些運算都需要有兩個元件才能運算,所以必須要有一個初始值,而當array只有一個element時,為了確保可以得到正確的資料,所以and array的初始值必須設定成True, or array的初始值必須設定成False,multiple array的初始值必須設定成1。不這樣設定的話當array只有一個element時就有可能會計算錯誤,因此當empty array去運算的時候,就會輸出初始值。

  7. 原因是內部的draw flatten pixmap是透過concatenate方式,所以有register反而會讓資料長大,如果不是要疊圖千萬不能這樣搞

  8. 基於array的定義:取最大的dimension

  9. 可能是bug吧,我試不出來,而且看轉換前後的binary string也都一樣。

  10. exp node裡面,^不是次方而是bit xor

  11. 在string的range設定內,下限是CurrentMeasurement,所以Current在下限之下,因此輸出F,如果把CurrentMeasurement改成CurrensMeasurement就會輸出T,因為t在s之上。我猜會有人看不懂XD

  12. 資料型態轉換問題,由第一個節點得知輸入與輸出的int型態不同,上兩個是從int轉enum,LabVIEW會修正所以正確,第三個是轉成binary string再轉成enum,型態不同會導致抓的位元不同,因此還原錯誤,如果前後型態改一樣就會正確。第四個跟第三個概念類似。第五個太老了我不知道XD,沒用過4版的不知道資料結構的差異性

  13. 元件的定義,當值剛好為0.5時,會自動跑到最接近的偶數。這是維持統計穩定性。

  14. 運算順序差異導致進位運算不同,造成些微的運算誤差。

  15. 空陣列build的預設值問題,概念類似6,如果不是空陣列就不會有這個問題

  16. 跟15類似,一樣是空陣列build問題,不過比較有趣的是他的比較方式,第一個array index比完如果一樣是0他就不會比第二個array index,array index原始資料由上而下是0x00,0x00,0x00,0x01,0x01,0x00。所以下面的吃虧XD。如果兩個dim index都比的話那麼答案就會都是F

  17. 單純資料流問題,frame定義順序,執行還是遵照資料流

  18. 兩個wait競爭會導致timing jitter (是這個名詞嗎),簡單說LabVIEW wait function會有異常

  19. 跟3一樣,標準的資料型態轉換問題,整數轉換遵從溢位,浮點數轉整數則會看上下限,

  20. 兩個xor都接互斥,永遠都會是T,兩個T and 還是T,這不是理所當然@[email protected]?

  21. 題目有錯吧,I16根本不可能出現32768這個數值輸出,所以上半部是錯的,下半部是對的。還是這是2012的bug?

  22. 看不懂…

1個讚

第9項當1D矩陣被拆分的時候,如果數量不能被平均分配,
多出來的元素會被捨棄,因此拆開再組合應該會變成個數不同
但是我用2013下去做,結果會變成1D的布琳,而不是單一一個布琳
看起來是版本不同的BUG

我沒想過個數的問題,或許是這個解吧。
另compare元件上按右鍵,可以選擇compare的模式,
一個是針對每個元件各別compare,輸出的會是陣列
一個是針對整筆資料compare,輸出的是一個boolean