現有一個.txt的數據檔,x與y之間以tab鍵相隔,但是資料筆數太大~~~(當初取太密了)為了減小資料量,所以想每隔100筆抓出一個數據,這樣10000筆的數據量就可減小至100個。
我用的辦法是先將資料讀出至陣列中,再用迴圈的方式讀取陣列中固定間隔的列數資料,然後再另存一個文字檔,程式如下
雖然輸出的結果有達到資料量減小的目的,但是顯示的數值卻皆為0…
試了好久…也不知道問題出在哪??
所以煩請版上各位大大幫忙看,謝謝!
現有一個.txt的數據檔,x與y之間以tab鍵相隔,但是資料筆數太大~~~(當初取太密了)為了減小資料量,所以想每隔100筆抓出一個數據,這樣10000筆的數據量就可減小至100個。
我用的辦法是先將資料讀出至陣列中,再用迴圈的方式讀取陣列中固定間隔的列數資料,然後再另存一個文字檔,程式如下
雖然輸出的結果有達到資料量減小的目的,但是顯示的數值卻皆為0…
試了好久…也不知道問題出在哪??
所以煩請版上各位大大幫忙看,謝謝!
你可以在數據進入回圈的地方同時建立一個indicator大概就可以看出錯誤在哪了.
時序是labview常被忽略的問題吧.當你的資料ㄧ筆一筆進入回圈時.他也同時在取值.也就是說當你輸入第一筆數據時.他擷取第一筆.輸入第二筆十.她擷取第五筆…陣列都還是空的.所以輸出全都是0 (點亮labview的燈泡可以看到時序喔!!)
1338477.0749189815
不好意思<span =“bold”>,imling你寫的那個用Local Varibale基本上是有問題的,想法沒有錯,可是忽略了LABVIEW執行上的時間問題,做一點修正就可以用。(例如將你的all rows再拉線接上for loop就可以)
不過還是回到問題,既然知道是陣列輸入的迴圈方式有問題,那直接改輸進去的方式就好拉。
test.vi
關鍵在輸入迴圈的地方,按滑鼠右鍵,選Disable Indexing。
KIPA38477.6632523148
謝謝板上各位大大的回覆~~
我要的vi在po出問題後的持續嘗試,已經寫出來了!!與kipa大的做法相似…與原先的vi相比,差異僅在於將“read from spreadsheet file.vi”置入迴圈內,如此即可得到我想要的結果,程式如下:test.vi 但這是當初在思考程式架構中未曾考慮的做法~~
為何置於迴圈外時,建立的indicator會顯示全部陣列值,但傳入時迴圈卻不是??且“read from spreadsheet file.vi”置於迴圈內,迴圈每執行一次就代表又重新讀取所有的資料量,如此不是多餘的動作嗎?
雖然問題解決了,但還有很多疑惑~~~ (我功力太差了 )
還盼請板上各位大大解答。謝謝~~
[QUOTE=qqi]但這是當初在思考程式架構中未曾考慮的做法~~為何置於迴圈外時,建立的indicator會顯示全部陣列值,但傳入時迴圈卻不
是??且“read from spreadsheet
file.vi”置於迴圈內,迴圈每執行一次就代表又重新讀取所有的資料量,如此不是多餘的動作嗎?[/QUOTE]
你說的沒錯阿…你的確做了非常多次多餘的動作,這樣的做法算是降低了程式的效率。
看來樓上大大給你關於forloop的建議你沒有完全了解,也應該說,labview的forloop有很多不同於其他程式語言的小功能。底下簡單說明一下:
這兩個loop幾乎是一樣的吧,首先駐注意兩個地方,第一:上面的loop的沒有給"N"的大小(這樣可以執行喔),第二:上面的兩個顯示都是一個數字,下面的都是陣列。
先說明輸入的部分,上面的loop,當你這樣接的時候,你的原始陣列輸入迴圈的的方式,是採用indexing的方式,就是雖然你輸入陣列到迴圈中,但是
它會依序幫你從原始陣列的第一個值依序送入迴圈中,所以你在會loop中只會每次次得到一個值,所以此時你也可以不用設定你的loop要跑幾次,會自動依照
你輸入的陣列大小決定跑幾次喔,當然也可以設定,不過要是設的值比你的輸入陣列的大小還大的話,可是會執行到該陣列的大小就停止囉。而下面的loop就是你一次把你的陣列送入loop中,因此每次loop執行的的時候,他就是以整個送入的值做運算的,在
這裡你一次就送入整個的陣列,所以你一定要設定你的loop要跑幾次,這樣你的程式才可以運作。
再來輸出的部分,上面的部分,接出的時候選用了"Disable
Indexing",這樣的設定,只會送出當loop執行最後一次所得到的值,下面的話,他會將每一次loop執行後該接線所得到的值自動的紀錄下來,當
loop結束後,把紀錄的結果用陣列的結構送出,所以送出的陣列大小就跟你迴圈執行的次數是一樣的。
希望這樣你能了解關於 for loop的使用方法。
KIPA38478.5771643519
非常謝謝KIPA大的詳細解譯!!
我把程式內容修改後,果然數據抓取的速度較之前快上許多。真是非常謝謝KIPA大的幫忙,讓我在實驗數據的整理可以節省許多時間…也謝謝大家對這簡單的問題可以提出意見,謝謝!!