matlab c# 编程,C#中调用Matlab编写的函数

关于C#与Matlab的混合编程,我在网上看了很多教程,按他们的步骤进行,总会遇到各种各样的问题不能解决,最终以失败而告终。经过自己两天的努力,看了诸多文献,终于成功了,故把自己确信能成功的方法分享给大家。当然在编写不同功能的函数会遇到其它千奇百怪的问题,因此我不能保证按我的方法在任何环境下都能成功。本文只是一个简单的例子,遇到的问题相对较少,更复杂的问题或更诡异的出错只能请教其他大神了。

本文所用的编程平台为Visual Studio 2010,Matlab版本为MATLAB R2012a,这是最后一版经典界面的Matlab。

一、编写Matlab函数文件

此部分不多说,学过Matlab的都懂。

例子为一个已知半径R计算圆周长的函数zhouchang()。

75e1133251ed0be0d1a29dda654e7048.png

二、编译函数文件为DLL

在Matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字,在其下面的目录表示.net类名,在类名上点右键"Add File...",把Matlab的.m函数文件选进去。

1f3e1be1a948bd5de5b27c109eac34b3.png

217bd452dfd4899f3cac38dc5e3ac450.png

387bb349eb4fe018c7fd11bf7577a45d.png

最后进行编译(Build the project),生成的目录下有以工程名命名并加Native的dll文件。

fffb63f0c5be53c658d9988137e882f2.png

过程可能较久,耐心。如果出错,看提示是什么出错,网上搜索相关资料修改。

三、在C#中调用

建立一个C#工程并引用MWArray.dll和刚生成的zhouchangNative.dll。

我的MWArray.dll在:..MATLABR2012atoolboxdotnetbuilderbinwin64v2.0MWArray.dll

3d0ef0f4e330891be087b23fa4cfd61b.png

62b745f932d50ec8a688f027695b95f5.png

添加声明:

using MathWorks.MATLAB.NET.Arrays; //数据交换必需

using MathWorks.MATLAB.NET.Utility; //如果要用到画图功能才添加

using zhouchangNative;// 引用的DLL文件名

编写代码:

5652992bd180236bc6eb1e170872c0c8.png

编译运行后可能会有如下出错:

6491dc4d61f46d88d621650e3c27a477.png

需要进行如下设置:

8054d7c6cb6ae71701001f71168bca0d.png

25246fb4ad4e2503af3b93c3c5ff7af6.png

编译运行:

bc4c2a9099fc48580a64717cadf731e1.png

大功告成!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值