Я пытаюсь испачкать руки совместимостью между сервером .net-приложений Matlab и F # -скриптом.В настоящее время я застрял с проблемой передачи данных.Если я открою новый Matlab-экземпляр в F # -интерактиве:
#I @"C:\Program Files\MATLAB\R2010a\bin\win64";;
#r @"MLApp.dll";;
let matlab=new MLApp.MLAppClass();;
И затем я создам Matlab-Array:
matlab.Execute("a=[1 2 3 4 5;6 7 8 9 10]");;
Следующий шаг для передачи массива Matlab в.net будет
let b =matlab.GetVariable("a","base");;
Вот когда начинается проблема.Переменная 'b' будет иметь тип 'object', предоставляя только общий интерфейс типа .net-object.Как я могу получить числовой массив из этой переменной?Есть ли способ применить downcast к '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|]|]
В чем разница между этими типами?И почему я не могу применить нарезку массива к arr типа float [,]?