Язык программирования F# предлагает возможность реализовать те же решения, вы обычно реализуете использование C#, но с меньшим количеством кода. Это может быть полезно при масштабировании решения для развертывания через общекорпоративную установку, или в любой ситуации, где КПД кода оценен. Краткость программ F# может также сделать их легче обеспечить.
Следующий пример показывает вам, как интегрировать развертываемый MATLAB magic
функция в приложение F#.
Необходимо запускать Microsoft® Visual Studio® 2010 или выше использовать этот пример.
Если вы создаете этот пример в системе, запускающей 64-битный Microsoft Visual Studio, необходимо добавить ссылку на 32-битный MWArray
DLL из-за текущей имитации компилятора Microsoft F#.
Создайте MagicSquareComp
компонент с помощью инструкций в Генерирует блок.NET и Создает Приложение.NET.
Используя Microsoft Visual Studio 2010 или выше, создайте проект F#.
Добавьте ссылки на свой компонент.NET и MWArray
в Visual Studio.
Сделайте пространства имен.NET доступными для вашего компонента и MWArray
библиотеки:
open MagicSquareComp open MathWorks.MATLAB.NET.Arrays
Задайте функцию Магического квадрата с начальным let
оператор, можно следующим образом:
let magic n =
Инстанцируйте компонента Магического квадрата:
use magicComp = new MagicSquareComp.MagicSquareClass()
Задайте входной параметр:
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 MagicSquareComp.MagicSquareClass() // 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.