其实整个过程比较简单,但是需要心细一点。

  需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLAB Compiler Runtime,这个文件(MCRInstall.exe)在安装完MATLAB之后就会在安装文件夹下存在,需要搜索一下(因为不同版本的MATLAB可能存放位置不同),把它安装一下就OK了。

  接下来在MATLAB中写一个m文件,当然是一个函数啦。然后在matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字(例如sinfit),在其下面的目录表示.net类名(例如sinfit),在类名上点右键"Add File...",把Matlab的.m函数文件(例如sinfit.m)选进去。最后进行编译(Build the project),生成的目录下有以工程名命名的dll文件(例如sinfit.dll)。OK,dll生成好了。

  接下来打开VS,导入两个dll,一个前面生成的那个dll,一个是<matlabroot>/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然后在工程里加入下面的引用:

  using MathWorks.MATLAB.NET.Arrays;
  using MathWorks.MATLAB.NET.Utility;
  using sinfit;

  OK,可以用了,用法是实例化一个sinfit的对象,然后调用里面的matlab函数,不过有一个问题需要注意的是,matlab的输入和输出数据都是矩阵,很特殊,在.net中叫做MWArray,它还有一个子类叫做MWNumericArray,它们的使用方法简单说明如下:

  创建一个MWNumericArray对象的方法:MWNumericArray para = new MWNumericArray(MWArrayComplexity.Real, 4, 2);这样就创建了一个矩阵,如果要把它映射给一个double型的二维数组,则需要创建数组double[,] temp = new double[2, 4];这个地方就要注意了,正好反过来。然后如果是MWNumericArray赋给double[,]的话可以采用MWNumericArray的ToArray方法,如double[,] paras = (double[,])para.ToArray(MWArrayComponent.Real);其中para是MWNumericArray对象。如果是double[,]赋给MWNumericArray的话,那就直接赋值就OK了。

转载于:https://www.cnblogs.com/neuzhangyu/p/3294305.html

C#调用Matlab生成的dll方法相关推荐

  1. vs2008中调用matlab生成的dll

    vs2008中调用matlab生成的dll matlab版本为:matlab7.11.0(R2010b) vs2008 1.在matlab中生成dll 在m文件中实现如下功能: 获得N个魔方矩阵的秩. ...

  2. c#调用matlab生成的dll

    c#调用matlab生成的dll,这个过程分为三步: 1.编写matlab代码 2.将.m文件编译成dll 3.在C#代码里调用dll 打算实现的功能: 求x*y的二维数组的均方差 一.编写matla ...

  3. qt调用matlab生成的dll库

    最近由于在项目中要用到matlab的算法,而用C++转换matlab算法非常麻烦,所以采用qt+matlab混合编程的方法,在使用中遇到了些许问题,特记录如下. 一.生成matlab库 1.首先需要下 ...

  4. vc调用matlab生成的dll实例

    http://blog.csdn.net/ithzhang/article/details/7444563 转载于:https://www.cnblogs.com/burellow/archive/2 ...

  5. qt中调用matlab生成的动态库

    前言: 前面已经实现了在vc中调用matlab生成的动态库,请参考:vc中调用matlab生成的动态库 现在在前面已经生成好的matlab动态库的基础上,在qt中调用matlab生成的动态库.生成ma ...

  6. vc调用matlab生成的C++dll库总结。

    实验室的一个项目需要调用matlab程序.经过再三考虑,决定使用vc调用matlab导出库的形式.而我主要负责与matlab程序结合的工作.以下是今天工作的简要总结.全当是个备忘吧. 1:在matla ...

  7. QT matlab 混编-qt调用matlab生成dll

    前言 环境: win10 Qt5.12 mingW(64位) matlab2019a(64位)----mingw w64 主要参考的文章:1. https://blog.csdn.net/Justic ...

  8. CSharp调用Matlab编译的dll

    一.使用环境:Visual Studio 2010,Matlab7.11.0(R2010b),操作系统为64位,则对应的Matlab安装在Program Files文件夹下,而非Program Fil ...

  9. 如何在Delphi 中调用C#生成的DLL类库

    最近需要写一个和给上位机和下位机通讯的接口,而上位机是用Delphi开发的,所以就需要用C#做一类库给Delphi调用 大概步骤: 1.首先在VS2008中新建一个类项目名为TestDelphi,然后 ...

最新文章

  1. BIM技术在地铁中应用
  2. [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御
  3. 【Notes7】Samba/NFS服务器,Ntp,导出log,modprobe,进入ME刷bios,树莓派
  4. 【十大经典数据挖掘算法】PageRank
  5. 西门子实数转整数_西门子PLC指令全都翻译过来了!
  6. c语言简易调度器,给大家分析SD调度器
  7. 领域驱动设计(DDD)的实践经验分享之持久化透明
  8. matlab listbox选中输出,vba中ListBox控件的使用
  9. Java设计模式------工厂模式-------工厂方法模式
  10. 中望3d快捷键命令大全_中望CAD快捷键全集
  11. 深度解读企业微信与个人微信的区别?
  12. GRM Tools 声音设计套装 Delays 演示
  13. mount gives unknown filesystem type 'vboxsf' 解决方法
  14. 微信小程序完整精品demo:移动小商城:基于node,包含前后台
  15. c语言直方图最大矩形面积,利用枚举法求直方图中最大矩形面积的方法实例
  16. [敏捷开发]研发管理 开发过程管理
  17. android 延时拍照,手机如何延时拍摄 手机延时拍摄技巧有哪些
  18. 中国独角兽企业前景预测及投资规划建议报告2022-2028年版
  19. URAL 1517. Freedom of choice (后缀数组)
  20. Windows下连接RTL-SDR直接使用命令听FM广播

热门文章

  1. Qt_数据库基本操作(未完成)
  2. java list 遍历查找_Java用list储存,遍历,查询指定信息过程详解
  3. python读取行、分割、存储_Pytables / Pandas:组合(读取?)按行分割的多个HDF5存储...
  4. phpstorm 全项目替换_会信息交互还带5G基站的路灯来了!白云新城智慧灯杆项目动工...
  5. C语言学习笔记---文件操作 fopen()函数 和 fclose()函数
  6. mysql中数据库基础操作
  7. 10_隐马尔科夫模型HMM1_统计学习方法
  8. 如何在本地管理和切换多个 github 账号?
  9. 53.Azure中CentOS的Docker里安装运行SQL Server容器
  10. 2.移植uboot-添加2440单板,并实现NOR、NAND启动