2012-12-03 40 views
1

我想在未經過排序的數據集中使用Matlab中的divergence函數。因此,對於總共6列數據集,我有矢量(3列)的起源和矢量場(3列)的三個分量Fx,Fy,Fz的x,y,z位置,其中位置是三維體積中的隨機點。我應該如何轉換數據才能被divergence讀取?隨機採樣的3d矢量場的Matlab散度

我想我應該使用meshgrid並生成一個與我的原始隨機點相關的有序網格,但我應該如何處理矢量場F?

回答

0

你是對的,使用meshgrid生成統一的數據點,然後如果你的數據表現良好,你應該能夠使用interp3進行插值。

FinterpX = interp3(Xmeas,Ymeas,Zmeas,FmeasX,Xgrid, Ygrid, Zgrid); 
FinterpY = interp3(Xmeas,Ymeas,Zmeas,FmeasY,Xgrid, Ygrid, Zgrid); 
FinterpZ = interp3(Xmeas,Ymeas,Zmeas,FmeasZ,Xgrid, Ygrid, Zgrid); 

但是,您的隨機數據點可能不適合使用這種方法的工作,由於該interp3他們放的約束。

+0

我試過了,但似乎我缺少一些基本的東西:Fmeas必須是3d數組,而對於我來說它只是一個具有三列和特定數量M行的二維數組。此外,Xmeas,Ymeas ...和Xgrid,Ygrid ...必須具有相同的尺寸,顯然不是因爲一個是測量數據,另一個是插值點。有關如何重塑數據的任何建議? –

+0

是的,我意識到這現在不起作用。如果你將Fmeas分成它的組件併爲每個組件分別執行一次interp,它將會起作用。我會做這個改變。 Xmeas,Ymeas和Zmeas可以是矢量。 – dustincarr

+0

我回來了。在閱讀interp3的文檔後,我現在更加困惑。我不確定是否可以爲您的問題構建Xmeas,Ymeas和Zmeas。如果它們是向量,那麼它們必須嚴格單調遞增,如果要填充3D空間,這是不可能的。對不起,我會考慮更多。 – dustincarr