在 02-14-2007 08:34 PM
hi super steve
很抱歉沒把問題描述的很清楚
我是用labview透過gpib控制兩台儀器(光譜儀triax 320 和 stanford reserch system 的鎖相放大器sr830)
舉例來說:控制的步驟大概如下
設定光譜儀要走的範圍(ex:300nm~500nm)和步進值1nm, 然後光譜儀就會從300nm出發,以每秒增加1nm的速度前進到500nm
每到一個新位置的時候,電腦從鎖相放大器sr830那裡讀取數值然後繪圖(waveform chart)
也就是執行後我會讀到五百筆的數據(包含光譜儀位置和讀回的值)
由於我的實驗需要的是平均的數據(老師說可以用來消除雜訊)
所以我在原來用來讀取的程式外面加了一個迴圈(for loop)
這個迴圈執行的次數代表的意義就是我要在這個 範圍走幾次(300nm~500nm走兩次)
光譜儀走完第一次以後的,鎖相放大器讀到數值會先以陣列的形式暫存在這個for loop的 shift register供下一次取平均用
第一次讀到的值除以現在的 loop iteration就是第一次的平均
然後在光譜儀走第二次 , 將第二次鎖相放大器讀到的值和暫存的值相加再以陣列的形式儲存到shift register 供下一次取平均用
相加的值除以現在的loop iteration就得到兩次的平均
現在進入我的問題
1. 我發現剛開始執行這個程式的時候,程式從鎖相放大器讀點的部份沒問題,可是在最後取平均的部份,常常有部份平均後的數據消失了,
,500筆數據平均後只剩10組,可是奇妙的是,當我重新執行幾次這個程式以後,這個問題就不會再出現了
2.我很想把程式碼放上來,可是我不會把它放在網路上讓人家抓,所以要討論的人,可不可以把你們 的email給我阿,我在把程式和程式需要的 instrument driver弄成壓縮檔寄給你們
我的信箱: superfatweber@yahoo.com.tw
Dear Eddy;
很感激你給我的idea;
拿來驗證我的取平均方法很好用
經過驗證以後;
取平均的方法是正確的
至於initialize array
在原本的程式我就有做了
我是用funtion palette>>array>>initialize array 的函式
煩請幫我檢查一下有沒有錯
數值的格式
這個 問題我就不是很清楚了
anyway,
很感激你
新年快樂
Dear FATWEBER:
你只是犯了使用local variable的小毛病,當你修改"step"跟"from"的參數時,第一次執行程式時,像"# of Data PT",還有for 迴圈的第一次"Step"與"From"都會用到上一次的值,所以有時若你更改"step",跟"from"後,執行的第一次會怪怪的,但多跑幾次就好了,因為這些local variable又都統一了,所以當變數使用有先後順序時,要特別小心喔! 建議把主程式前接一個sequence,裏面都放"本尊",然後主程式裏都有"分身",這樣應該就ok了!! Good Luck...
Eddy
Dear Eddy;
我照著你的說法改了我的程式碼
然後測試了幾次
資料消失的情形就不在出現了
真的很感謝你
謝謝
新年快樂