Интегрируйте блок.NET в приложение F#

Язык программирования F# предлагает возможность реализовать те же решения, вы обычно реализуете использование C#, но с меньшим количеством кода. Это может быть полезно при масштабировании решения для развертывания через общекорпоративную установку, или в любой ситуации, где эффективность кода оценена. Краткость программ F# может также сделать их легче поддержать.

Следующий пример подводит итог, как интегрировать развертываемый MATLAB, функция magic от Генерирует блок.NET и Создает Приложение.NET.

Необходимо запускать Microsoft® Visual Studio® 2010 или выше использовать этот пример.

Предпосылки

Если вы создаете этот пример в системе, запускающей 64-битный Microsoft Visual Studio, необходимо добавить ссылку на 32-битный DLL MWArray из-за текущей имитации компилятора Microsoft F#.

Шаг 1: создайте компонент

Создайте компонент makeSqr, использование инструкций в Генерирует блок.NET и Создает Приложение.NET.

Шаг 2: интегрируйте компонент в приложение F#

  1. Используя Microsoft Visual Studio 2010 или выше, создайте проект F#.

  2. Добавьте ссылки на свой компонент и MWArray в Visual Studio.

  3. Сделайте пространства имен.NET доступными для вашего компонента и библиотек MWArray:

    open makeSqr
    open MathWorks.MATLAB.NET.Arrays
    
  4. Задайте функцию Магического квадрата с начальным оператором let, можно следующим образом:

    let magic n =
    Затем добавьте следующие операторы, чтобы завершить функциональное определение.

    1. Инстанцируйте компонента Магического квадрата:

      use magicComp = new makeSqr.MLTestClass()  
    2. Задайте входной параметр:

      use inarg = new MWNumericArray((int) n)
      
    3. Вызовите 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[,])
    
  5. Добавьте, что другой оператор, которому позволяют, чтобы задать вывод отображает логику:

    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())

Полная распечатка программ следует:

 Программа магического квадрата F#

Шаг 3: разверните компонент

См. MATLAB Runtime для получения информации о развертывании вашего компонента конечным пользователям.