擷取三個通道的資料繪成3d surface graph

我在使用daq卡同時擷取三個通道的資料想要畫出一個3d的圖,
可是我取完資料之後,在連接x、y vector時都沒問題,
但連到z matrix時我沒辦法建出要求的matrix
請問我該如何修改才能達到程式要求的條件?
xiang38307.7397916667

假設x軸的Array大小為5,即有5個element.Y軸有4個,則z軸是一個2D的array,大小為5*4,所以你的z軸給錯了,所以無法連線.

我覺得應該是因為輸入的資訊並非2d的陣列資訊所造成,因為3D Parametric Surface.vi的x,y,z matrix輸入皆必須為2D的陣列,你不妨先用array size的vi驗證你x,y,z輸入資料的維度(也就是你index的值,但是由你的圖看來,似乎你所輸入3D Parametric Surface.vi的資料為1D的資料(我試過接1D的陣列會斷線)),以3D圖來說,應該是X,Y,Z三個輸入值決定3D GRAPH上的一個點,所以我認為這三個輸入的資料維度(資料數)應該一致才是!!!

[QUOTE=麟仔]我覺得應該是因為輸入的資訊並非2d的陣列資訊所造成,因為3D Parametric Surface.vi的x,y,z matrix輸入皆必須為2D的陣列,你不妨先用array size的vi驗證你x,y,z輸入資料的維度(也就是你index的值,但是由你的圖看來,似乎你所輸入3D Parametric Surface.vi的資料為1D的資料(我試過接1D的陣列會斷線)),以3D圖來說,應該是X,Y,Z三個輸入值決定3D GRAPH上的一個點,所以我認為這三個輸入的資料維度(資料數)應該一致才是!!![/QUOTE] 我接給z的線確實是一個1d的array,而且長只有3,也就是我擷取的3個通道所各抓到的值
我想知道我現在該如何才能把我擷取到的資料變成程式要求的2d array,
我有試過使用reshape array去硬把我的資料變成一個2d的array,結果畫出來只有一個點,
想請問前輩們如果想要畫出一個表面的話,我是不是要把擷取資料的方式改變呢?如果要改變的話又該如何改變?

這個VI是為了畫3D圖形而設計的,不是要畫空間中的點,因此不是空間中一點由XYZ座標構成。舉例說當你知道(1,1,1)但是不知道(1,2,Z)的Z座標值時,要怎麼畫出這個曲面。實際上Zmatrix就是(X,Y,Z),只是這時的X Y要參考X Y input Vector。

[QUOTE=shepherder]假設x軸的Array大小為5,即有5個element.Y軸有4個,則z軸是一個2D的array,大小為5*4,所以你的z軸給錯了,所以無法連線.[/QUOTE]

我認為shepherder說的是正確的。

我們說三度空間中的一個點是由(x,y,z)這一組座標所構成。但是如果是一個平面來說,X與Y都是1D Array,此時的Z就要是2D Array。就一個平面來說,X,Y都是索引(index),「值」才是Z軸負責的。因為畫出來的是2D的曲面,所以Z自然也是2D Array,這樣說明不知道明不明白呢?

Benjamin38307.999837963

to shepherder:

我知道這個vi是用來畫3d曲面,而不是標出空間中的一個點,
我要的也是畫出一個3d的表面

to benjamin:
我明白z軸應該要是一個2d的array才能對應到x和y的值,
我現在的問題應該是無法把我的資料變成2d的array,
但我不知該如何才能把資料轉過去

我做的方法,你可能會在DAQ中遇到問題,

shepherder38308.4040972222

[QUOTE=xiang]to benjamin:
我明白z軸應該要是一個2d的array才能對應到x和y的值,
我現在的問題應該是無法把我的資料變成2d的array,
但我不知該如何才能把資料轉過去[/QUOTE]

說到這個我就想請問,在你開發的這個程式中,x,y,z三軸分別表示什麼物理意義。要先知道到三個軸的物理意義,然後在來解這個問題,不然隨便兜,弄出來的東西可能會很瞎扯淡。

to shepherder:
我有試過這個方法,結果只畫出一個點

to benjamin:
我忘了說我三個軸分別代表的物理意義了
我的xy軸分別是量測的範圍xy,而z則是量測物件的表面粗糙度,希望前輩們能給我一點意見

你是要量表面粗度,那最好在紀錄Z值時,要順便紀錄X,y.也就是把Z值填入對應的MATRIX X對應ROW Y對應COL,至於X Y VECTOR就由你自己輸入而非DAQ擷取