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]' –