许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  C#调用Matlab库函数:混合编程实现与示例

C#调用Matlab库函数:混合编程实现与示例

阅读数 43
点赞 0
article_banner

C#调用Matlab库函数

1. 以C#调用Matlab中dicomread与dicominfo为例编写了此示例。
2. Step1编写C#interface

C#新建类库

添加MWArray.dll引用编写接口,注意设置编译平台为X64或与Matlab对应

数据格式转换表


.NET TypeMWArray TypeMATLAB Type
System.DoubleMWNumericArraydouble
System.NumberMWNumericArraydouble
System.FloatMWNumericArraysingle
System.ByteMWNumericArrayint8
System.ShortMWNumericArraynt16
System.Int32MWNumericArrayint32
System.Int64MWNumericArrayint64
System.CharMWCharArraychar
System.StringMWCharArraychar
System.BooleanMWLogicalArraylogical
N/AMWStructArraystructure
N/AMWCellArraycell

注:遵循.NET CLS规范的语言不支持uint16uint32uint64类型,但这三个在Matlab中是支持的。所以给.net开发组件时,这三种类型的变量就不能被用于M函数中。最后的structurecell这两种数据类型在.net中完全无法找到合适的对应类型,用N/A来表示。

3. Step2编写MatlabCode

编写.m库函数

Matlab工具箱deploytool生成dll
Ø Command window中输入deploytool
Ø 选择.Net Assembly,添加相关.m文件
Ø 工程名为MatlabFunctionC#using时用该名
Ø 修改Class1类名为CS_MatlabC#实例化时用该类
Ø Files required for your library to run中添加DicomInterface.dll
Ø MicrosoftFramework设置为3.5
Ø 设置完成后如下图所示,点击Package封装函数

注:最终生成MatlabFunction.dllMatlabFunctionNative.dll两个文件

4. Step3编写C#TestCode

l 添加C#控制的项目
l 添加MatlabFunction.dllMatlabFunctionNative.dllMWArray.dllDicomInterface.dll引用

   l 添加using MatlabFunctionusing MathWorks.MATLAB.NET.Arrays
l 解析MWArray数据时先转Array后强制转换为Double[,]类型
l 解析MWStructArray时,通过.FieldNames先获取FileName[]数组,然后.GetField读取文件MWArray最后进行数据转换
l 最终代码如下




  源代码及说明文档Word版下载(实在不熟悉CSDN的编辑器囧!!)
 


  http://download.csdn.net/detail/fei13148687/9781816
 
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空