matlab和c#联合仿真之一(VS2010,Matlab2012a)
2018-02-04 11:28
881 查看
转自:xlw1219w1219
在本篇博文中,我想通过一个简单的例子来详细介绍C#是如何使用Matlab DeployTool生成.Net组件的。
除了本文以外,大家还可以在MATLAB C#混合编程demo这个新浪播客中观看视频。
开发环境为:VS2010 + Matlab2012a
1、创建一个简单的.m文件
打开Matlab 2012a,新建一个.m文件,输入如下代码:
function myplot(a,b)
m = 1:a;
n = 1:b;
plot(m,n);
注意这个函数是没有输出的。
如果需要多个输入输出,可以用varargin和varargout参数。
将代码保存为myplot.m文件。
2、使用Matlab DeployTool生成.Net组件
在Matlab 2012a的Command Window中输入deploytool并回车,就可以打开Matlab的DeployTool,如图所示。
在name中输入工程名myplot.prj,并选择type:.net assembly。确定。则进入项目设置界面,如图所示。
点击add class 新建一个类,默认为class1,再在类下面添加文件,本文只有一个文件myplot.m,如果有和该函数相关的多个文件,都应该添加到这个类下面,添加后如图所示。
点击编译按钮或使用快捷键Ctrl+B则对该工程进行编译。编译后生成的dll文件放在同名目录myplot\distrib下,同时myplot\src下也有个同名dll,效果也应该一样。
3、创建一个测试用的c# WPF应用程序。
4、添加对MWArray.dll的引用
MWArray.dll一般位于[Matlab安装位置]\R2012a\toolbox\dotnetbuilder\bin\win32\v2.0文件夹中,我们注意到Matlab 2012a对应的MWArray.dll是2.12.0.0版本的。在进行Matlab版本升级的时候,比较头疼的就是这个dll。
因为版本升级意味着之前生成的dll都需要重新生成。关于版本升级的问题,我将在后面的博文中详细介绍。
之所以添加MWArray.dll,是因为在这种混合编程方式下,我们经常要
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
右键reference,add reference,添加MWArray.dll和myplot.dll引用,同时在函数声明中调用,如图:
5、调用myplot函数。
myplot.Class1 b = new myplot.Class1();
b.myplot(0, 10, 10);
注意第二句输入了三个参数,第一个参数指的是输出参数的个数,由于没有输出参数,所以置0,好像这是matlab2012的新规则,老版本的有输出参数的例子参见参考文献。另外调用matlab生成的dll中的函数的时候一定要注意输入参数的类型,我的经验是能确定类型的尽量固定好类型,否则会出莫名其妙的错误。
参考文献:
1. http://www.cnblogs.com/horizon_king/archive/2011/01/21/1941220.html
在本篇博文中,我想通过一个简单的例子来详细介绍C#是如何使用Matlab DeployTool生成.Net组件的。
除了本文以外,大家还可以在MATLAB C#混合编程demo这个新浪播客中观看视频。
开发环境为:VS2010 + Matlab2012a
1、创建一个简单的.m文件
打开Matlab 2012a,新建一个.m文件,输入如下代码:
function myplot(a,b)
m = 1:a;
n = 1:b;
plot(m,n);
注意这个函数是没有输出的。
如果需要多个输入输出,可以用varargin和varargout参数。
将代码保存为myplot.m文件。
2、使用Matlab DeployTool生成.Net组件
在Matlab 2012a的Command Window中输入deploytool并回车,就可以打开Matlab的DeployTool,如图所示。
在name中输入工程名myplot.prj,并选择type:.net assembly。确定。则进入项目设置界面,如图所示。
点击add class 新建一个类,默认为class1,再在类下面添加文件,本文只有一个文件myplot.m,如果有和该函数相关的多个文件,都应该添加到这个类下面,添加后如图所示。
点击编译按钮或使用快捷键Ctrl+B则对该工程进行编译。编译后生成的dll文件放在同名目录myplot\distrib下,同时myplot\src下也有个同名dll,效果也应该一样。
3、创建一个测试用的c# WPF应用程序。
4、添加对MWArray.dll的引用
MWArray.dll一般位于[Matlab安装位置]\R2012a\toolbox\dotnetbuilder\bin\win32\v2.0文件夹中,我们注意到Matlab 2012a对应的MWArray.dll是2.12.0.0版本的。在进行Matlab版本升级的时候,比较头疼的就是这个dll。
因为版本升级意味着之前生成的dll都需要重新生成。关于版本升级的问题,我将在后面的博文中详细介绍。
之所以添加MWArray.dll,是因为在这种混合编程方式下,我们经常要
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
右键reference,add reference,添加MWArray.dll和myplot.dll引用,同时在函数声明中调用,如图:
5、调用myplot函数。
myplot.Class1 b = new myplot.Class1();
b.myplot(0, 10, 10);
注意第二句输入了三个参数,第一个参数指的是输出参数的个数,由于没有输出参数,所以置0,好像这是matlab2012的新规则,老版本的有输出参数的例子参见参考文献。另外调用matlab生成的dll中的函数的时候一定要注意输入参数的类型,我的经验是能确定类型的尽量固定好类型,否则会出莫名其妙的错误。
参考文献:
1. http://www.cnblogs.com/horizon_king/archive/2011/01/21/1941220.html
相关文章推荐
- matlab和c#联合仿真之一(VS2010,Matlab2012a)
- matlab和c#联合仿真之一(VS2010,Matlab2012a)
- matlab和c#联合仿真之二
- matlab和c#联合仿真之三
- Adams-Matlab联合仿真Forces反馈的一些注意事项
- OPNET与Matlab联合仿真参数设置
- [win8.1 64位] MATLAB导出控制系统的ADAMS联合仿真的实践 [一]
- MATLAB 与Modelsim之间对测试系统的联合仿真
- MATLAB 与Modelsim之间对测试系统的联合仿真
- [win8.1 64位] MATLAB导出控制系统的ADAMS联合仿真的实践 [二]
- OPNET与MATLAB的联合仿真方法
- matlab 2012 vs2010混合编程
- MATLAB与ISE联合仿真的必备流程
- 深度学习FPGA实现基础知识19(通过文件读写方式实现Matlab和Modelsim的联合仿真)
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
- C# Tips: 将 VS2012 / VS2013 的.sln文件、project文件转换成 VS2010格式
- matlab 2012 vs2010混合编程
- Matlab与C实时联合仿真二
- matlab 2012b与VS2010混合编程
- [转帖]通过文件读写方式实现Matlab和Modelsim的联合仿真