贊助商連結

之前就想出一個專題聊聊關於增加程式效率、減少記憶體消耗的專題,不過這議題實在太大,每每理好思緒想開始寫,就會被其他事情羈絆。於是,我決定先將各各小議題先各自寫文章,最後再做統整,今天就使用For loop的Parallel來起手,因為他是最簡單、最快速、最顯著的修改方法。

image

Parallel Foor Loop 大約是2009後的功能,這功能有一段一時間了,但使用的人並不多,一大原因是目前的電腦處理速度很快,普通應用其實並不需要使用這功能。Parallel Foor Loop就如同字面上的英文意思: 同步Foor迴圈,如何做到同步呢?假設處理程式的主機使用的是4核心電腦,如果未開啟這功能時,Foor Loop只會使用單一核心來處理此段程式,但如果開啟此功能,就可以選擇以多核心來處理。當然,此功能有它的限制,下面介紹如何使用後在介紹其限制。

在For Loop 上按右鍵-->Configure Iteration Parallelism 設定並開啟此功能。

image

接著會彈跳出設定視窗

image

設定完後,就可以開始使用了。下面用2個Foor loop使用一樣的程式碼,唯一不同的是上面foor loop將 iteration parallelism功能開啟。

image

將兩段程式計時比較,注意,兩段程式不能同步跑唷,需要disable其中一個,才能精準測試。

image

image

測試後兩個Elapse Time比較,可以發現其顯著的不同!!幾乎差了10^4倍

image

當然使用這parallel會有限制,其限制也跟他的特性有關,因為開啟此功能後會,是多核心同步運行,其資料不會互相傳遞,限制如下:

  1. Feedback node
  2. Shift Register
  3. Conditional Terminal
  4. ....可查如下表

image(此圖截自NI官網)

如果有多個迴圈需要分配時也可以參考下面寫法,達到CPU的分配,

image(此圖截自NI官網)

詳細的使用,包含上面幾個圖的解釋,可以參考NI的白皮書: http://www.ni.com/tutorial/9393/en/

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

在數字轉換上,LabVIEW可以使用各種方法做轉換,這裡介紹2種方法做轉換

image

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

在上篇LabVIEW_使用Riffle達到真正隨機取數Random提到,使用Random Number.vi 取出N個不重複的數字時,有發生機率不平均的象限,這篇探討這方法結果和Riffle,vi的差異:

image

在隨機取數字當中,最常使用方法為Random Number(0~1)如下圖:

image

但是這方法是否真的為平均隨機?下方將這段程式跑10000次做驗證:

image

發現,取出Index0的機率為500次左右,而其他為1000次做右,如下圖,從左到右分別為出現0到9的次數

image

 

使用Riffle方法,如下圖

image

發現取出的機率,更接近是平均的,,如下圖,從左到右分別為出現0到9的次數

image

從上面2個比較可以看出Riffle取出的隨機數較Random+Round to Nearest更為平均分布

 

程式碼可在這邊(Download)下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

收到讀者來信糾正之前的文章LabVIEW_最大值和最小值中的任意個數不重複隨機陣列_樂透抽獎選號LabVIEW_最大值和最小值中的任意個數隨機數陣列 這兩個提到隨機陣列其陣列並分真的"隨機"數列。其陣列中間的數是隨機出現沒錯,但陣列最初和最末陣列出現的機率並沒有平均。我必須承認和道歉,之前的作法並非真的做出平均隨機,所以這篇介紹如何取出真的平均出現的隨機方法:

image

Riffle.vi實際上的意義為從輸入端的[X]中隨機取出2個數值到輸出Riffled[X]陣列中,再從剩餘[X]陣列中取出隨機2個數值到輸出Riffled[X]陣列中,此動作重複N次,此N為[X]的陣列大小。

那一樣使用樂透選數字的範例來展示其如何應用,

image

 

程式碼可以在這邊下載,如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

之前有Synchornization家族的Semaphone(LabVIEW_Synchornization-Semaphone(紅綠燈)教學範例)和Notifier(LabVIEW_Notifier傳遞資料、程序管控教學範例),這篇介紹另外一個簡易型的Synchornization家族成員-Occurrence。從Occurrences的元件總共3個就能知道其功能並不多,多用在簡易的程序順序上。如果想了解較高級的Queue應用也可以參考Queue的教學:LabVIEW_Queue的教學_用法和範例。或者是應用集錦教學:Queue的應用

image

延續Semaphhone的應用,個位數和十位數的呈現:

個位數從0-9遞增,每跑一輪就讓十位數加一,因為十位數的顯示必定是在個位數的0-9條件達成後,才會+1。使用Occurrence達成。

程式碼: 可以看出個位數每10次後,解開Loop2的Occurrence。

image

程式碼可在這邊(Download)下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

可以利用"Array To Spreadsheet String.vi"將Array改成文字,其輸入型態可以有多元型態: String、Numeric、1DArray、2DArray(或是更高型態)

image

image

對應上方程式的解答:

image

程式碼可在這邊下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

讀者給我一封匿名信關於如何做數據的分類、排序:
 
程式在前面經過運算後會產生出一推數列
必須要把那些數列做一個分類
數值大於等於0.85的歸成一類,數值小於0.85的則也規程一類 ,並且要顯示出來有哪些
 
這邊可以下載, 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
以下做了幾種符合需求的解答方式給讀者參考:
image
image
image
image

這邊可以下載, 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(1) 人氣()

之前有分享過關於Symbol圖示的文章:

這篇介紹如何做出客製化的Symbol圖示,

在前一篇的文章中有提到 Symbols可以選擇的有從1~40總共40個,或是可以選擇從1000~1143的NI圖示,如果有特殊需求需要做到客製化的圖的話,可以利用Read ... File,將Image Data讀入,寫在Symbol Index裡。

image

當然,如果圖檔不是BMP檔案格式,也可以使用Read PNG File.vi、Read JEPG File.vi

image

這個綠色的圖示就是客製化的圖案,可以在Listbox中模擬燈號的顯示。

image

這邊可以下載, 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

之前有分享過如何在Listbox中做到像是Check的功能,就有讀者來詢問Symbol的圖示問題。Symbol可以使用的圖案會根據每台電腦Windows版本的不同而顯示出不同的圖案, 標配大約有40個,可以透過遞排列檢視出Symbols的圖案。實際上的symbols使用方法可以參考之前的文章:LabVIEW_Multicolumn Listbox 勾選選單( Symbol Checkbox )

程式碼可在這邊下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

image

另外如果有留意的讀者應該會有印象LabVIEW Help中的畫面有VI、Project、Library...等的圖示。

image

這些圖示,LabVIEW也是有供給使用者使用,Symbol Index 從1000~1143,可以到 LabVIEW Idea Exchange 下載前輩寫好的程式碼

image

客製化的Symbol圖示方法可以參考:LabVIEW_客製化Listbox、Tree的Symbol圖示

程式碼可在這邊下載 , 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

 

 

 

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

在早期的單元裡有介紹Queue 和 Producer and Consumer 的應用: LabVIEW_多重迴路架構-Producer & Consumer架構教學範例LabVIEW_Queue的教學_用法和範例 ,但在實務上這兩種用法可能又太簡單了,實際應用上,往往步驟複雜且多元,所以這篇用LabVIEW的template-Producer/Consumer Design Pattern (Events)作範例修改成以個彈性較大的模板。

程式碼可在這邊下載 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

image

這個範例,有兩種模式分別的功能如下:

  • Start All : 打開 燈1、燈2、燈3
  • Start 3+1 : 打開 燈3、 燈1

可以看出這兩種模式有相同的功能: 燈1、燈3,但是順序不同,在第2種模式(Start 3+1)時必須先開燈3再開燈1,這樣子重複性高、順序跳躍的形式,使用State Machine並不適合,因為要使用太多的Case去區隔不同的模式。

這個範例使用Script(劇本)的概念來運作,將每個"功能"都當作劇本中的一個小章節,不同的模式則選用不同的章節來完成:

  • Script 1 : 打開燈1、打開燈2、打開燈3
  • Script 2 : 打開燈3、 打開燈1

實際上的程式:

當Start 3+1 的按鈕被啟動後。會觸發 Producer Loop(上 Loop) 的"Start 3+1 Script",而Consumer Loop(下 Loop) 會接收到做"Start 3+1 Script"劇本,並發出指令集"Off All"、"Light 3"、"Light 2"。

image

Function: Off All、Light 1、Light 2、Light 3、Stop

image

程式碼可在這邊下載 如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

 

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼