LabVIEW如何實現計數計時功能?
02-07
程序如下,隨機數所輸出的一個值,在乘以100之後,在100和0之間浮動,我通過判斷是否在0到10之間,讓提示燈選擇亮或者不亮。現在我遇到的問題是,如何寫入一個程序可以得到提示燈燈亮的時間?(本人愚笨,希望得到一個具體的實例,或者說一個比較具體的步驟,我在網上看了一些,發現操作起來並不能實現)
不勝感激
(其實燈有多個,我這裡只列出來了兩個。用這個寫法的話,可以確保只有一盞燈亮。我需要的計時,是多盞燈的分別計時。比如燈1亮的時間,和燈2亮的時間,是分別得到的。我想了很久還是不會寫,希望得到大家的幫助,謝謝!)
我寫了一個計數的代碼,外加統計最終的分布概率。如果想要計時的話,可能要根據 wait until next ms 的參數再換算成時間。不過我覺得對於這個問題,可能實現計數就可以了。
判斷 0 到 100 之間的隨機數是否小於10、是否10和20之間、是否20和30之間……要實現這個功能,可以像題主想的那樣用 case structure 判斷,然後對 case structure 的執行次數計數。不過我覺得,也可以直接用這個隨機數除以10,然後根據整除的結果和餘數直接判斷。比如25除以10,等於2,餘5,2 這個結果就可以判斷25位於20和30之間。再比如68,除以10,等於6餘8,根據6就可以判斷64在60和70之間。當按下 stop 之後,計數 array 存貯的是所有的隨機數的計數,而指示燈的 array 顯示的是最後一次循環的隨機數的情況,只有一個指示燈亮。比如上面這次運行,從開始到按下stop,之間共循環了5751次,每循環一次,某一個指示燈亮起,某一個計數項加一。0到10之間的隨機數有575個、10到20之間有578個……最後一次循環的隨機數是47.7807,所以40到50之間的那個指示燈是亮的。
為了驗證結果,還可以在執行完成之後,把計數的這個 array 轉化為百分比。array 的每一項除以整個 array 的數值的總和,就可以得到每一項所佔的百分比。最後運行的結果是這樣的,比如循環了 2258039次,最終每一項的百分比都比較接近於10%,說明隨機數真的是比較隨機的。
如果閑的無聊,運行的次數足夠多,每一項的概率就會越接近10%。這種問題不應該來知乎問。
下午沒啥事,我就回答下吧。根據提問的要求,可以這樣實現:
- 寫隨機使LED亮的VI(可重入)
- 寫計算某個LED 亮的時間的VI(可重入)
- 寫主VI,在同一個loop中調用1、2 中的VI,由於是可重入的,可以多次調用。
推薦閱讀: