2011-11-15 44 views
2

我試圖讓我的手變得與Matlab的.net-應用服務器和F#腳本之間的互操作性變得骯髒。 目前,我遇到了數據傳輸問題。 如果我在F#-interactive打開一個新的Matlab的實例:將數據從Matlab應用服務器傳輸到F#

#I @"C:\Program Files\MATLAB\R2010a\bin\win64";; 
#r @"MLApp.dll";; 
let matlab=new MLApp.MLAppClass();; 

然後我創建了一個Matlab的數組:

matlab.Execute("a=[1 2 3 4 5;6 7 8 9 10]");; 

下一步的Matlab的陣列轉移到.NET會be

let b =matlab.GetVariable("a","base");; 

這是問題出現的時間。變量'b'將是類型'對象',僅提供.net對象類型的通用接口。 如何從這個變量中獲取一個數組數組?有什麼辦法可以將downcast應用到'數組浮點'?

編輯:

好,有一兩件事我不理解:在施加所述向下轉換陣列後具有類型array2D,浮[,]。但會顯示這樣的數組:

arr;; 
val it : float [,] = [[1.0; 2.0; 3.0] 
         [4.0; 5.0; 6.0]] 

對於矩形陣列,我習慣了得到這樣的

arr;; 
        = [|[|1.0; 2.0; 3.0|] 
         [|4.0; 5.0; 6.0|]|] 

哪裏是這些類型之間的區別?爲什麼我不能將數組切片應用於float [,]類型的arr?

回答

5
let arr = b :?> float[] 

喪氣運營商:?>

+0

是的,謝謝!通過強制類型float [,]它可以工作! – user1047427

0

只是爲了保持完整性,您也可以使用downcast。當我們已經推斷出演員的類型時,我更喜歡這一點。如果您以後改變類型,那麼您需要更改一個地方。

相關問題