【精选】Matlab与C#混合编程.pdfVIP

  • 97
  • 0
  • 约3.87千字
  • 约 11页
  • 2017-12-04 发布于贵州
  • 举报
【精选】Matlab与C#混合编程

本文所使用的环境是VS2010+Matlab2011b ,此方法不适合Matlab2010 及以下的版本。本文 图比较多,但是按照此步骤走下去,一定可以成功的生成一个可调用的dll 文件。红字部分 为特别注意的地方。 示例代码可以在CSDN 中搜索用户bqrmt,在资源列表中查找。 生成C#的接口 在C# 中新建一个类库,如下图所示,工程名最好易识别,本文使用DemoTestInterface 修改平台配置,如果使用的项目是x86 的,就生成x86 ,否则就x64 。一定不能AnyCPU 。并 且x86 的平台只能使用x86 的Matlab 来生成,x64 的必须使用x64 的Matlab 生成。如果系 统是Win7x64 的,Matlab 一般是x64 的,如果需要生成x86 ,可以使用VMWare 虚拟机 添加引用,MWArray.dll ,路径为:..\ MATLAB\toolbox\dotnetbuilder\bin\win32\v2.0\ ,由于 VS2010 并不支持.Net 中直接添加,所以需要在浏览选项卡中添加,如下图所示。 如果使用的是VS2008 ,可以直接在.Net 选项卡中找到,MathWorks, .NET MWArray API。在此 选项卡中,按键盘上的“M”,出现的第一个,就是所要的文件。VS2010 中目前未能实现通 过此方法添加。也可以与VS2010 一样,在浏览中添加。 添加之后,如下图所示 在类文件的头部,添加using,内容如下:using MathWorks.MATLAB.NET.Arrays;,并修改类类 型为Interface 和相应的接口名。并注意接口名与命名空间名不能一样。如下图所示: 添加所需要实现的 Matlab 函数声明,本例中实现的是两个矩阵的乘法,添加声明,其中 MWNumericArray 是Matlab 与C#的变量转换中间类,在文章第11 页有具体细节的解释。此 处,只需要给出主函数的声明,子函数不需要声明。如下图所示: MWNumericArray MatrixMultiply (MWNumericArray srcMat1, MWNumericArray srcMat2); 生成此接口文件,待调用。 Matlab 相关操作 编写需要实现的主函数,函数名需要与C#声明的函数名相同。如果需要使用到子函数,一 并编写子函数,此处使用子函数,将矩阵乘以1。由于本文只是一个示例,所以具体的变量 保护的措施,建议最好在C#调用Matlab 之前就做好,结合本例,如两个矩阵不一样大小等 等。注意主函数中的“double ”,如果希望主C#调用的结果是double 型的,此处需要强制转 换成double 型,其它类型则以希望输出的变量类型设置。文章第11 页有详细讲解。 新建一个Matlab 工程,可以由File-New-Deployment Project 创建,或者直接在Command Window 中输入deploytool 创建,如下图: 修改工程名,适合自己习惯,这里使用MatlabMultiply.prj 修改Type ,为.Net Assembly,此步骤非常重要。 出现界面如下图所示: 选择Add class,根据自己习惯,以方便识别为原则,添加Matlab 的类名,这里使用CS,一 并将主函数拖动到此处。如果需要使用到子函数,将子函数拖动到Shared Resources 中。如 下图所示: 选择界面右上方的齿轮,在弹出的下拉菜单中选择Settings,进行相关配置 在弹出的界面中,需要设置两个地方,一个是.Net 设置,另一个是Type Safe API ,在.Net 设 置中,Microsoft Framework 默认选择是default,将此处按照目标环境修改,如VS2008 就选 择3.5,VS2010 选择4.0 。这里选择4.0 在Type Safe API 设置中,需要将上一步骤生成的接口文件复制到当前Matlab 函数的文件夹 中,并在Interface assembly 中选中。如下图所示: 选择右上角齿轮旁边的生成按钮,生成需要的dll 文件。 生成的文件中一般需要用到的有如下三个文件,CSIDemoTest.dll 、MatlabMultiplyNative.dll 和 DemoTestInterface.dll。特别的是,第二个文件,在distrib 文件夹中,有一个名字类似, 但是不带 Native 的文件,此文件不需要。第三个文件,是此前C#生成的接口文件。将此三 个

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档