[转载] 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. 备注
更多的数据格式转换,请用matlab的help索引MWArray。
比如,MWNumericArray的构造函数页。关键是构造函数实现了两种数据格式的转换。
[转载] C# matlab联合编程简介的更多相关文章
- 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件
我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...
- c++与matlab联合编程,调用Deploytool 生成exe文件和dll文件(转)
转自:http://www.cnblogs.com/xlw1219/archive/2012/12/25/2832222.html 首先必须知道联合编程需要知道的一些命令解释: mcc 的作用是将 . ...
- java matlab混合编程之返回值Struct类型
java matlab混合编程的时候当返回值是Struct类型(matlab中的返回类型)如何来取得(java中)其值? 上网找,看到这个网页:http://www.mathworks.cn/cn/h ...
- 《编程简介(Java) ·10.3递归思想》
<编程简介(Java) ·10.3递归思想> 10.3.1 递归的概念 以两种方式的人:男人和女人:算法是两种:递归迭代/通知: 递归方法用自己的较简单的情形定义自己. 在数学和计算机科学 ...
- VC 与Matlab混合编程之引擎操作详解
Visual C++ 是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便. Matlab 是一款将数值分析.矩阵计算.信 ...
- OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. OpenCL安装 安装我不打算 ...
- matlab混合编程向导(vc,vb,.net...)
一.matlab与vc混编 1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用: 这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2) ...
- 第二章 Matlab面向对象编程基础
DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...
- C语言与MATLAB接口 编程与实例 李传军编着
罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...
随机推荐
- Luogu P1160 【队列安排】
详细的链表讲解 很明显的一个链表裸题 和普通的链表有一个区别就是这个题 可以O(1)插入,O(1)查询 然后我们为了方便,采用双向链表,定义s.f作为指针数组 更详细的解释见代码 #include&l ...
- Mysql建表语句
create table messages( id int unsigned primary key auto_increment, sender varchar(64) not null, gett ...
- django 建立一个简单的应用
本人的用的版本是python 2.7.3和django 1.10.5,Windows10系统 1.首先通过命令建立项目和app 找到django的安装路径,我的路径是:C:\Python27\Lib\ ...
- java批量生成excel文件
1.导入用于操作excel的jar,地址:https://pan.baidu.com/s/1qXADRlU 2.生成excel使用的模版文件,地址:https://pan.baidu.com/s/1c ...
- 域名解析A记录与CNAME有什么区别?
A记录是直接将域名指向某个IP,如果您的主机IP不常变动就建议使用A记录.而别名解析是先将域名解析到主机别名再转跳到IP这样主机IP改变了不用重新解析.如果主机IP常变建议用别名解析 A记录正规些.独 ...
- Linux系统的优势
熟悉电脑的人都知道,Linux 相比较于 Windows 有着众多的优势,所以现在越来越多的电脑用户开始使用 Linux 进行办公.学习.总体来讲,Linux 的优势主要有以下几个方面. 一.开源.免 ...
- Spark介绍及安装部署
一.Spark介绍 1.1 Apache Spark Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架(没有数据存储).最初在2009年由加州大学伯克利分校的AMPLab开 ...
- 一步一步学习IdentityServer4 (7) IdentityServer4成功配置全部配置
auth.liyouming.com 全部配 public class Startup { public Startup(IConfiguration configuration) { Configu ...
- 使用VSCode配置简单的vue项目
由于最近要使用的项目框架为前后端分离的,采用的是vue.js+webAPI的形式进行开发的.因为之前我没有接触过vue.js,也只是通过视频文档做了一些简单的练习.今天技术主管说让大家熟悉下VSCod ...
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) M - Unsatisfying 2-Sat
题目大意:给你 m 个式子, 问你最少再添加多少式子能使没有任何一种赋值方式使全部的式子为真. 并且在你给的式子中不能有非. 思路:根据题目给的m个式子可以建出2-Sat的图, 现在问你最少加多少个边 ...