Язык программирования F# предлагает возможность реализовать те же решения, вы обычно реализуете использование C#, но с меньшим количеством кода. Это может быть полезно при масштабировании решения для развертывания через общекорпоративную установку, или в любой ситуации, где эффективность кода оценена. Краткость программ F# может также сделать их легче поддержать.
Следующий пример подводит итог, как интегрировать развертываемый MATLAB, функция magic от Генерирует блок.NET и Создает Приложение.NET.
Необходимо запускать Microsoft® Visual Studio® 2010 или выше использовать этот пример.
Если вы создаете этот пример в системе, запускающей 64-битный Microsoft Visual Studio, необходимо добавить ссылку на 32-битный DLL MWArray из-за текущей имитации компилятора Microsoft F#.
Создайте компонент makeSqr, использование инструкций в Генерирует блок.NET и Создает Приложение.NET.
Используя Microsoft Visual Studio 2010 или выше, создайте проект F#.
Добавьте ссылки на свой компонент и MWArray в Visual Studio.
Сделайте пространства имен.NET доступными для вашего компонента и библиотек MWArray:
open makeSqr open MathWorks.MATLAB.NET.Arrays
Задайте функцию Магического квадрата с начальным оператором let, можно следующим образом:
let magic n =
Инстанцируйте компонента Магического квадрата:
use magicComp = new makeSqr.MLTestClass()
Задайте входной параметр:
use inarg = new MWNumericArray((int) n)
Вызовите MATLAB®, получите массив ячеек выходного аргумента и извлеките первый элемент как двумерный массив плавающий:
(magicComp.makesquare(1, inarg).[0].ToArray() :?> float[,])
Полное функциональное определение выглядит так:
let magic n =
// Instantiate the magic square component
use magicComp = new makeSqr.MLTestClass()
// Define the input argument
use inarg = new MWNumericArray((int) n)
// Call MATLAB, get the output argument cell array,
// extract the first element as a 2D float array
(magicComp.makesquare(1, inarg).[0].ToArray()
:?> float[,])
Добавьте, что другой оператор, которому позволяют, чтобы задать вывод отображает логику:
let printMagic n =
let numArray = magic n
// Display the output
printfn "Number of [rows,cols]: [%d,%d]"
(numArray.GetLength(0)) (numArray.GetLength(1))
printfn ""
for i in 0 .. numArray.GetLength(0)-1 do
for j in 0 .. numArray.GetLength(1)-1 do
printf "%3.0f " numArray.[i,j]
printfn ""
printfn "=========================\n"
ignore(List.iter printMagic [1..19])
// Pause until keypress
ignore(System.Console.ReadKey())Полная распечатка программ следует:
См. MATLAB Runtime для получения информации о развертывании вашего компонента конечным пользователям.