Язык программирования 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 для получения информации о развертывании вашего компонента конечным пользователям.