1
我有一個將多維數組從Matlab應用程序服務器傳輸到F#腳本會話的問題。將數組從Matlab應用程序服務器傳輸到F#
#I @"C:\Program Files\MATLAB\R2010a\bin\win64";;
#r @"MLApp.dll";;
let matlab=new MLApp.MLAppClass();;
matlab.Execute("a=[1 2 3 4 5;6 7 8 9 10]");;
let b =matlab.GetVariable("a","base");;
let arr = b :?> float[]
應用downcast後,數組的類型爲array2D,float [,]。但會顯示這樣的數組:
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?
托馬斯,多麼榮幸!如果我理解正確,數組類型的數組也被稱爲「鋸齒數組」?關於分割,如果我嘗試做類似'arr。[0,0..2]'的操作,我會收到錯誤消息:'此表達式預計有 'a [] ,但這裏的類型爲 float [,]' – user1047427
是的,這是正確的。數組的數組也被稱爲「鋸齒狀數組」。關於切片,您總是需要爲兩個索引指定切片(並且結果將是二維數組,即使您實際只選擇其中一個維中的一個元素)。例如:'arr。[0..0,0..2]' –