我是靠谱客的博主 怕孤独硬币,最近开发中收集的这篇文章主要介绍C# Matlab 混合编程学习C# Matlab 混合编程实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C# Matlab 混合编程实验

工程中有些测试需要对数据进行处理,并输出图表计算。而Matlab在数据处理和图形输出上有优势,相比而言C#等编程实现图表较困难。
Matlab中已经提供封装成库供其它语言调用的功能。由于Matlab内变量定义类型与其它语言不一致,Matlab提供了相关参数的转换类和函数。供C#转换的基类的MWArray,继承的有MWNumericArray、MWCellArray等,包含在MWArray.dll中。

实现过程

1.Matlab中创建供C#调用的类,添加函数,并生成dll;
2.创建使用的C#工程;
3.复制需要使用的Matlab库和生成的库至C#工程执行目录,并引用Matlab新生成的Dll;
4.C#工程中调用Matlab的Dll。

具体实现举例

本示例实现C#调用Matlab中的库,实现弹出提示信息。
Matlab版本:R2012a 64位
VS版本:2010

1.Matlab中创建供C#调用的类,添加函数,并生成dll

如下图,打开Matlab,File–New–Deployment Project…。
在这里插入图片描述

弹出创建工程窗体,本例定义工程名称为“MCTForNet.prj”,Type选择“.Net Assembly”,如下图:
在这里插入图片描述

之后,Matlab界面会新增“.Net Assembly”的项目页,如下图:
在这里插入图片描述
点击“Add Class”创建类,本例重命名类为“MCTForNetMain”;点击“Add files”,添加需要调用的Matlab函数文件。本例中”ShowFigTest.m”简单实现读取传入的文件名数组,并弹出文件数组个数。代码如下:

function ShowFigTest( rawFiles )
fileCount=length(rawFiles);
msgbox(num2str(fileCount), '关于', 'help');
End

点击“Build”按键,生成dll,目录为:…MCTForNetMCTForNetdistrib

2.创建使用的C#工程

VS下,创建项目“MatLabTest1”,项目类型为”Windows Forms Application”。
由于Matlab生成的dll为x64,故项目平台需要设置为x64位。

3.复制需要使用的Matlab库和生成的库至C#工程执行目录,并引用Matlab新生成的Dll

复制C#中需要使用的Matlab库MWArray.dll至C#工程执行目录下。
路径在Matlab安装目录下:…MATLABR2012atoolboxdotnetbuilderbinwin64v2.0

复制在步骤1中生成的dll至C#工程执行目录下。
在这里插入图片描述

4.C#工程中调用Matlab的Dll

C#工程中,引用MWArray.dll和生成的MCTForNet.dll;
在这里插入图片描述

添加调用函数。本例用涉及把字符串数组作为参数传递给Matlab函数,使用MWCellArray类,见函数SArrayToMWCellArray:

public void ShowFig()
{
string[] files = System.IO.Directory.GetFiles(@"D:DownLoad");
MWCellArray mwA = SArrayToMWCellArray(files);
MCTForNetMain mctForNetM = new MCTForNetMain();
mctForNetM.ShowFigTest(mwA);
}
private MWCellArray SArrayToMWCellArray(string[] sArray)
{
MWCellArray mwA = new MWCellArray(1, sArray.Length);
for (int i = 0; i < sArray.Length; i++)
{
mwA[1, i + 1] = sArray[i];
}
return mwA;
}

数值数组赋值举例:

MWNumericArray mwRange = new int[] {1, 16, 169, 192};

调用ShowFig()函数,生成弹出窗体:
在这里插入图片描述
Matlab的类调用较耗时。

最后

以上就是怕孤独硬币为你收集整理的C# Matlab 混合编程学习C# Matlab 混合编程实验的全部内容,希望文章能够帮你解决C# Matlab 混合编程学习C# Matlab 混合编程实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部