- 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#生成的接口文件。将此三
个
您可能关注的文档
- 【精选】Leaking questions.ppt
- 【精选】LED灯单位知识.doc
- 【精选】LED灯闪光字制作方法。.pdf
- 【精选】LED照明的SWOT分析.pdf
- 【精选】LED色灯信号机构大小同透镜式色灯信号机.doc
- 【精选】LED的_WIFI控制卡使用说明.doc
- 【精选】LED灯具资料.doc
- 【精选】LED灯闪光字制作方法.doc
- 【精选】Leed认证评分.doc
- 【精选】LEGO最有意思的高手教材.pdf
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2023年浙江省公务员考试行测真题及答案(A卷).doc VIP
- 2025年河北对口医学题库及答案.doc VIP
- 餐饮美学基础 课件 模块四 餐厅民俗美学.pptx
- (山东)建筑与结构工程施工资料表格汇编(鲁JJ001-074).pdf VIP
- 餐饮美学基础 课件 模块三 餐厅环境美学.pptx
- 2025年长沙电力职业技术学院单招笔试职业技能考核试题库含答案解析.docx VIP
- 雷克萨斯-Lexus NX-产品使用说明书-NX200-ZGZ10L-AWXLPC2-NX200NX200t_OM78064C_01-1412-001.pdf VIP
- 小学语文五年级第二学期第二单元整体作业设计.docx
- 外研版小学英语(三年级起点)三年级上册Module2-Unit1同步检测.doc VIP
- 2025年河南省平顶山市中考生物试卷(含答案).pdf
原创力文档

文档评论(0)