C#调用Matlab库函数

C#调用Matlab库函数

1. C#调用Matlabdicomreaddicominfo为例编写了此示例。
2. Step1编写C#interface

C#新建类库

C#调用Matlab库函数_第1张图片

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

 C#调用Matlab库函数_第2张图片

 数据格式转换表

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

3. Step2编写MatlabCode

编写.m库函数

 C#调用Matlab库函数_第3张图片

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封装函数

 C#调用Matlab库函数_第4张图片

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

4. Step3编写C#TestCode

添加C#控制的项目
l 添加MatlabFunction.dllMatlabFunctionNative.dllMWArray.dllDicomInterface.dll引用
添加using MatlabFunctionusing MathWorks.MATLAB.NET.Arrays
解析MWArray数据时先转Array后强制转换为Double[,]类型
解析MWStructArray时,通过.FieldNames先获取FileName[]数组,然后.GetField读取文件MWArray最后进行数据转换
l 最终代码如下

C#调用Matlab库函数_第5张图片

源代码及说明文档Word版下载(实在不熟悉CSDN的编辑器囧!!)
http://download.csdn.net/detail/fei13148687/9781816


 

 

你可能感兴趣的:(Project)