[转载] C# matlab联合编程简介

                                             原作者  文月

主要操作说明:

1. 找到matlab安装目录下的MCRInstaller.exe安装

MCRInstaller.exe 在安装目录下的 ..\MATLAB7\toolbox\compiler\deploy\win32\中;

2. 将写好的matlab的.m文件转换为动态链接库

2.1 编辑M文件

比如写了.m文件 f.m。其中的function C=f(A,B)实现的是C=A+B

function C=f(A,B)

C=A+B;

end

2.2 在matlab的命令窗口中输入deploytool

2.3 选择file-NewDeployment Project

2.4 选择MATLAVB Builder NE, .NET Component

然后OK

2.5 添加一个类

按‘添加类’,之后弹出对话框,输入类名,确认后,按‘添加m文件’,添加.m文件。

确认后。按”链接“。即可在matlab的工作目录中看到新建的对应这个工程名的文件夹,打开其中的distrib文件夹,可以看到f.ctf和f.dll两个文件,将这两个文件拷贝到c#工程的工作目录中。

3 C#中添加引用

在c#工程右侧的解决方案资源管理器中,鼠标右击“引用”,选择“添加引用”,然后选择浏览,找到刚才放到C#工程中的.dll文件。选中确定。引用部分则会显示f。并且引用C:\Program
Files\MATLAB\R2008a\toolbox\dotnetbuilder\bin\win32\v2.0中的MWArray.dll。然后引用中出线MWArray的引用。

在c#文件起始部位添加如下代码

using MathWorks.MATLAB.NET.Arrays;

using MathWorks.MATLAB.NET.Utility;

using f;

 

4 数据格式转换与使用

4.1 数据格式转换

fclass mfuntion = newfclass();

double[]a={1,2,3,4,5,6};

double[]b={2,4,6,8,10,12};

double[,] c;

MWNumericArray mA = newMWNumericArray(3, 2, a);           
MWNumericArray mB = newMWNumericArray(3, 2, b);

MWNumericArray mC=(MWNumericArray)mfuntion.f(mA,
mB);            c=(
double[,])mC.ToArray(MWArrayComponent.Real);

4.2 为按钮click事件添加完整的代码

fclass mfuntion = new fclass();

double[] a = { 1, 2, 3, 4, 5, 6 };

double[] b = { 2, 4, 6, 8, 10, 12
};

double[,] c;

MWNumericArray mA = new
MWNumericArray(3, 2, a);

MWNumericArray mB = new
MWNumericArray(3, 2, b);

MWNumericArray mC =
(MWNumericArray)mfuntion.f(mA, mB);

c = (double[,])mC.ToArray(MWArrayComponent.Real);

int row = c.GetLength(0);

int col = c.GetLength(1);

string text = "\r\n";

for (int i = 0; i < row; i++)

{

for (int j = 0; j < col;
j++)

text += Convert.ToString(c[i, j]) +
‘ ‘;

text += "\r\n";

}

textBox1.Text = text;

5. 备注

更多的数据格式转换,请用matlabhelp索引MWArray。

比如,MWNumericArray的构造函数页。关键是构造函数实现了两种数据格式的转换。

时间: 2024-10-07 06:10:18

[转载] C# matlab联合编程简介的相关文章

c++与matlab联合编程,调用Deploytool 生成exe文件和dll文件(转)

转自:http://www.cnblogs.com/xlw1219/archive/2012/12/25/2832222.html 首先必须知道联合编程需要知道的一些命令解释: mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能.mcc 也可以将.m文件编译为exe可执行文件. mex 的作用是将 c/cpp文件编译为 .m  文件可以调用的库文件,在Windows操作系统里通常是以mexw32或mexw64为扩展名,让你可

VC++和Matlab混合编程(在VC中调用将.m文件生成的DLL)

这是师兄们在实际项目中用到的关于VC++和MATLAB混合编程的实例.最近自己在瞎鼓捣,也就研究了下这块,本想写篇博文,但网上这块的资料还算是比较多,写的也比较具体,想着不重复劳动,因此我也就不写了. //提取节点信息 mxArray *csd_path; mxArray *save_path; mxArray *mat_path=mxCreateCellMatrix(NULL,NULL);//mxCreateCellMatrix:创建二维单位矩阵 mxArray *analog=mxCreat

C/C++与Matlab混合编程初探

欢迎转载,尊重原创,所以转载请注明出处. http://blog.csdn.net/bendanban/article/details/37830495 Matlab 拥有丰富的功能,编程简单.不过,有些情况下,Matlab程序的执行速度比较慢.C/C++编译执行的程序速度比较快,编程难度上比Matlab要高一些.因此存在一种方案,就是使用Matlab实现我们的实验程序,用C/C++来实现Matlab程序中比较耗时的部分,从Matlab程序中调用C/C++的程序以实现加速. 本文主要讲解如何在M

CPU+GPU异构计算编程简介

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 异构计算(CPU + GPU)编程简介 1. 概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算.一般我们的程序,是在CPU上计算.但是,当大量的数据需要计算时,CPU显得力不从心.那么,是否可以找寻其它的方法来解决计算速度呢?那就是异构计算.例如可利用CPU(Central Processing

Linux Framebuffer编程简介

linux下,framebuffer设备文件名通常是/ dev/fb0,1,2等.控制framebuffer设备的一般步骤如下:1) 打开设备,映射framebuffer2)依照硬件要求,准备好数据3)把数据复制到framebuffer例子程序如下:1)打开设备,映射framebufferstatic void *fbbuf;int openfb(char *devname){    int fd;    fd = open(devname, O_RDWR);    if (ioctl(fd,

Python基础-第七天-面向对象编程进阶和Socket编程简介

本篇内容: 1.面向对象编程进阶-静态方法 2.面向对象编程进阶-类方法 3.面向对象编程进阶-属性方法 4.面向对象编程进阶-特殊成员(内置方法) 5.面向对象编程进阶-反射 6.异常处理.断言 7.Socket编程简介 一.面向对象编程进阶-静态方法 1.静态方法的实现 通过@staticmethod装饰器可以把其装饰的方法变为一个静态方法: 变成静态方法后,形参中可以不用写self了.如果写了self,默认是不会把对象本身传递给self,需要手动传递: class Dog(object):

【转载】一个XACML的简介

A Brief Introduction to XACML 一个XACML的简介 摘要: 本文对XACML进行一个简要的介绍.如需对XACML作更多的了解,请访问OASIS的XACML技术委员会网站. 简要的说,XACML是一个通用的访问控制策略定义语言.XACML提供一套语法(使用XML定义)来管理对系统资源的访问. A Brief Introduction to XACML XACML简介 XACML是一个OASIS标准.该标准是一个描述(访问控制)策略语言,同时也是一个描述访问控制判断请求

c#与matlab混合编程探索

以下讲述如何使用c#来调用matlab函数实现北斗定位算法的仿真 1.准备 首先需要matlab2010,vs2010(其他版本是否可行,未知),另外需要安装matlab的辅助工具MCRInstaller(该工具无需下载,在安装好的matlab程序包中可以找到,例如:E:\matlab 2010\toolbox\compiler\deploy\win32) 2.准备matlab程序 上述截图是我的定位程序所涉及到的函数 3.matlab程序处理为dll文件,供c#调用,处理的基本步骤如下: (1

OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld

OpenCL安装 安装我不打算花篇幅写,原因是OpenCL实在是可以太多的平台+环境下实现了,包括GPU和FPGA,以及不同的器件支持,在这里我主要把网上可以找到比较不错的经验贴列一下,方便大家,我主要关注了FPGA的,其他GPU的大家网上搜搜吧: altera opencl sdk下载: https://www.altera.com.cn/products/design-software/embedded-software-developers/opencl/overview.html alt