C#调用Matlab库函数
1. 以C#调用Matlab中dicomread与dicominfo为例编写了此示例。
2. Step1编写C#interface
C#新建类库
添加MWArray.dll引用编写接口,注意设置编译平台为X64或与Matlab对应
数据格式转换表
|
.NET Type |
MWArray Type |
MATLAB Type |
|
System.Double |
MWNumericArray |
double |
|
System.Number |
MWNumericArray |
double |
|
System.Float |
MWNumericArray |
single |
|
System.Byte |
MWNumericArray |
int8 |
|
System.Short |
MWNumericArray |
nt16 |
|
System.Int32 |
MWNumericArray |
int32 |
|
System.Int64 |
MWNumericArray |
int64 |
|
System.Char |
MWCharArray |
char |
|
System.String |
MWCharArray |
char |
|
System.Boolean |
MWLogicalArray |
logical |
|
N/A |
MWStructArray |
structure |
|
N/A |
MWCellArray |
cell |
注:遵循.NET CLS规范的语言不支持uint16、uint32和uint64类型,但这三个在Matlab中是支持的。所以给.net开发组件时,这三种类型的变量就不能被用于M函数中。最后的structure和cell这两种数据类型在.net中完全无法找到合适的对应类型,用N/A来表示。
3. Step2编写MatlabCode
编写.m库函数
Matlab工具箱deploytool生成dll
Ø Command window中输入deploytool
Ø 选择.Net Assembly,添加相关.m文件
Ø 工程名为MatlabFunction,C#using时用该名
Ø 修改Class1类名为CS_Matlab,C#实例化时用该类
Ø Files required for your library to run中添加DicomInterface.dll
Ø 将MicrosoftFramework设置为3.5
Ø 设置完成后如下图所示,点击Package封装函数
注:最终生成MatlabFunction.dll,MatlabFunctionNative.dll两个文件
4. Step3编写C#TestCode
l 添加C#控制的项目
l 添加MatlabFunction.dll,MatlabFunctionNative.dll,MWArray.dll,DicomInterface.dll引用
l 添加using MatlabFunction,using MathWorks.MATLAB.NET.Arrays
l 解析MWArray数据时先转Array后强制转换为Double[,]类型
l 解析MWStructArray时,通过.FieldNames先获取FileName[]数组,然后.GetField读取文件MWArray最后进行数据转换
l 最终代码如下
源代码及说明文档Word版下载(实在不熟悉CSDN的编辑器囧!!)
http://download.csdn.net/detail/fei13148687/9781816
本文介绍如何使用C#调用Matlab中的dicomread与dicominfo函数,并详细记录了整个过程,包括创建C#接口、编写Matlab代码、生成DLL文件以及在C#中测试这些函数。

3087

被折叠的 条评论
为什么被折叠?



