C#调用Matlab生成的dll方法的详细说明
其实整个过程比较简单,但是需要心细一点。
需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLABCompilerRuntime,这个文件(MCRInstall.exe)在安装完MATLAB之后就会在安装文件夹下存在,需要搜索一下(因为不同版本的MATLAB可能存放位置不同),把它安装一下就OK了。
接下来在MATLAB中写一个m文件,当然是一个函数啦。然后在matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字(例如sinfit),在其下面的目录表示.net类名(例如sinfit),在类名上点右键"AddFile...",把Matlab的.m函数文件(例如sinfit.m)选进去。最后进行编译(Buildtheproject),生成的目录下有以工程名命名的dll文件(例如sinfit.dll)。OK,dll生成好了。
接下来打开VS,导入两个dll,一个前面生成的那个dll,一个是<matlabroot>/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然后在工程里加入下面的引用:
usingMathWorks.MATLAB.NET.Arrays;
usingMathWorks.MATLAB.NET.Utility;
usingsinfit;
OK,可以用了,用法是实例化一个sinfit的对象,然后调用里面的matlab函数,不过有一个问题需要注意的是,matlab的输入和输出数据都是矩阵,很特殊,在.net中叫做MWArray,它还有一个子类叫做MWNumericArray,它们的使用方法简单说明如下:
创建一个MWNumericArray对象的方法:MWNumericArraypara=newMWNumericArray(MWArrayComplexity.Real,4,2);这样就创建了一个矩阵,如果要把它映射给一个double型的二维数组,则需要创建数组double[,]temp=newdouble[2,4];这个地方就要注意了,正好反过来。然后如果是MWNumericArray赋给double[,]的话可以采用MWNumericArray的ToArray方法,如double[,]paras=(double[,])para.ToArray(MWArrayComponent.Real);其中para是MWNumericArray对象。如果是double[,]赋给MWNumericArray的话,那就直接赋值就OK了。
相关文章
- lasso回归matlab,机器学习Lasso回归重要论文和Matlab代码「建议收藏」
- matlab中错误使用fmincon,MATLAB中fmincon 函数问题
- matlab 插值出错,MATLAB插值问题
- matlab画图标签,Matlab绘图
- matlab 加权回归估计_Matlab:地理加权回归基本操作「建议收藏」
- matlab循环语句for_MATLAB以下选择语句错误的是
- MATLAB循环_matlab如何循环计算
- Matlab循环语句_matlab中if语句的用法
- Camstar开发C#代码规范、Camstar更新以及Designer 开发规范
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- 快速安装Linux上的MATLAB(linux安装matlab)
- 基于C#MBG扩展方法类库的使用详解
- C#字符串常见操作总结详解
- c#对象反序列化与对象序列化示例详解
- C#Page用于各页面继承功能实例
- C#的FileInfo类实现文件操作实例
- c#中switchcase的用法实例解析