主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

将 .NET 程序集集成到 F# 应用程序中

F# 编程语言提供了实现通常使用 C# 实现的相同解决方案的机会,但代码更少。在跨企业范围的安装扩展部署解决方案时,或者在任何重视代码效率的情况下,这都会很有帮助。F# 程序的简洁性也使其更易于维护。

下面的示例展示如何将可部署的 MATLAB®magic 函数集成到 F# 应用程序中。

前提条件

您必须运行 Microsoft® Visual Studio® 2010 或更高版本才能使用此示例。

如果在运行 64 位 Microsoft Visual Studio 系统上构建此示例,则必须添加对 32 位 MWArray DLL 的引用,因为当前模仿的是 Microsoft 的 F# 编译器。

步骤 1:构建组件

使用以下说明构建 MagicSquareComp 组件生成 .NET 程序集并编译 .NET 应用程序

步骤 2:将组件集成到 F# 应用程序中

  1. 使用 Microsoft Visual Studio 2010 或更高版本创建一个 F#工程。

  2. 在 Visual Studio 中添加对您的 .NET 组件和 MWArray 的引用。

  3. 使 .NET 命名空间可用于您的组件和 MWArray 库:

    open MagicSquareComp
    open MathWorks.MATLAB.NET.Arrays
    
  4. 使用初始 let 语句定义 Magic Square 函数,如下所示:

    let magic n =
    然后添加以下语句完成函数定义。

    1. 实例化幻方组件:

      use magicComp = new MagicSquareComp.MagicSquareClass()  
    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 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[,])
    
  5. 再添加一条 let 语句来定义输出显示逻辑:

    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