利用迴圈方式尋找數值並形成矩陣型態

我的問題是當我利用遞迴的方式找到數值之後,我該如何保存這些數值當我執行完程式時,並將這些數值成為矩陣型態,以下是我的程式所須的檔案

FBG01.txt,50GPeaks01.txt,Ref01.txt,peaks.vi

既然你已經在Loop內找到數值, 那在Loop使用Enable indexing就可以存成陣列

可是我這程式執行下一次時,無法將前幾次所得到的數值作暫存且執行完畢時可將所有數值集合成一矩陣型態。麻煩你可否看一下我的程式,謝謝。

[QUOTE=rtl]

可是我這程式執行下一次時,無法將前幾次所得到的數值作暫存且執行完畢時可將所有數值集合成一矩陣型態。麻煩你可否看一下我的程式,謝謝。

[/QUOTE]

你所謂的下一次應該是指迴圈跑下一次吧…

小弟我看了一下你的程式,很抱歉不太懂你的程式流程…

如果fbg wavelength是你要儲存的變數

那yao大大講的就沒有錯,你直接將這個變數拉出你的迴圈外面

然後設成Enable Indexing…應該是可以了









不過你的程式倒是有一個很嚴重的問題…

第一步你從txt讀檔後得到的陣列,為什麼不直接拉進迴圈裡,而要在使用local variable進入迴圈呢?因為這樣當你程式執行第一次時,根本不會有任何的值在local variable裡,必定出現無窮迴圈,程式算當了…


其實你的程式我有看, 看起來好像不複雜, 但是有點亂

最近我沒有時間花在論壇上面, 所以也只大概看了一下

[quote=rtl]

可是我這程式執行下一次時,無法將前幾次所得到的數值作暫存且執行完畢時可將所有數值集合成一矩陣型態。

[/quote]

你的下一次指的是重新再Run一次嗎? 否則目前的程式只run一次就結束了

如果是如此, 那你必須要把這一次的數據以File等格式儲存在電腦裡

下一次執行時再將當次的數據再儲存在同一個檔案中

如果不是, 那就如KIPA所說的做就可以了

[QUOTE=KIPA] [QUOTE=rtl]

可是我這程式執行下一次時,無法將前幾次所得到的數值作暫存且執行完畢時可將所有數值集合成一矩陣型態。麻煩你可否看一下我的程式,謝謝。

[/QUOTE]
你所謂的下一次應該是指迴圈跑下一次吧..
小弟我看了一下你的程式,很抱歉不太懂你的程式流程..
如果fbg wavelength是你要儲存的變數
那yao大大講的就沒有錯,你直接將這個變數拉出你的迴圈外面
然後設成Enable Indexing..應該是可以了




不過你的程式倒是有一個很嚴重的問題...
第一步你從txt讀檔後得到的陣列,為什麼不直接拉進迴圈裡,而要在使用local variable進入迴圈呢?因為這樣當你程式執行第一次時,根本不會有任何的值在local variable裡,必定出現無窮迴圈,程式算當了...

[/QUOTE]

我這個程式是利用ref peaks的點位來找尋fbg peaks點位是介於ref peaks點位哪個位置,且50gpeaks的矩陣sizes會依據迴圈遞減回來,當找到第一個fbg peaks是介於ref peaks那個位置時,此時波長計算方式為(fbgpeak(jj)-refpeak(kk))/(refpeak(kk+1)-refpeak(kk))*(50gpeak01(kk+1)-50gpeak01(kk)),以上是我程式運作目的。假如我在最外面再加一個迴圈會有問題嗎,還有想請教你我這個程式的邏輯有誤嗎?當我還未加最外圍的迴圈時,此時我把fbgpeak其中一個點位數值改變並儲存,為什麼程式執行完一次時,所找到的數值跟之前一樣,必須要執行第二次才可,是不是我的程式有問題ㄋ,謝謝?

看來你沒有了解我說你的程式的問題,先貼一張圖







我想的你目的應該是,先讀那三個檔案取得資料存進變數,然後將這個資料放進迴圈處理吧…不過你這樣寫,並沒有辦法達成這樣效果。

原因是這個時候的程式流程是:一開始,上面的部分讀取檔案路徑;同時;底下的Loacl Variable[ref peaks;fbg pesks]也讀取它的值,之後讀檔完成,進入迴圈處理。



所以你的程式一開始執行時,根本就沒有任何資料傳進迴圈。當你再執行一次時,底下的兩個Local Variable一開始就會讀值,當然這個時候讀到的直就是你上次執行存進去的值。

所以我才說你程式邏輯上有很大的錯誤,這些我想你在Block Diagram,把燈泡按下去[Highlight Execution],再執行程式,應該可以看到整個程式的流程。




謝謝,kipa詳細的說明。

個人是覺得

LabVIEW是資料流 要寫成有遞迴的功能

好像無法達成  最近小弟也在寫一個快速排列

但是只能進去排序 之後要遞迴出來 就有問題了