Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式。
2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编。
3. 这里介绍一个简单的MATLAB语言混编成C#的调用实例。
4. 这里用到的几个关键字:
4.1 环境MATLAB环境:是MATLAB 2012A 32位版本,也用到MATLAB 2012A 64位版本(如果采用32位版本,矩阵运算也可以运行),有时候用到矩阵运算的时候会提示警告信息。可以直接选择X86框架,也可以直接这样选择,一样会报错但是不用理会。
原因是,我这里导入了MATLAB的矩阵运算库,是32位2012a的,导入一个64位的矩阵运算库就不会出现这样的错误提示信息了。当然也可以不用理会,只要程序能够正常运行就可以。
4.2 MWArray矩阵运算库,MATLAB叫矩阵运算实验室,因此大多数的运算使用到了矩阵运算的库。因此在VS外部调试的时候需要把这个矩阵运算库引用进来,这个矩阵运算库的目录在:
这里按照的是32位版本的MATLAB,如果安装64位版本的MATLAB,这个位置是win64。
4.3 dll,导出的文件也是dll文件,因此引用也是引用dll文件
4.4 MWArray是MATLAB矩阵运算库,这个是必须的,到处完毕后也会有一个readme的英文文档。里面也有详细的安装说明。关于MWArray的这个矩阵运算的包后面详细说明。
5. 我们导一个64位架构的。
(1) 写一个函数并测试(注意必须是m文件)
(2)打开deploytool工具箱,命令行输入即可,添加相关内容,选择.net Assembly语言(C#)
这是我们需要的两个文件,主要是上面那个,下面那个是说明
(3)编写类名并把文件添加进来(C#是以类的形式存在,当然你带懂C#)
(4)开始生成
(5)完成
(6)进入VS2017进行调试,新建控制台(框架不用选太高)
(7)打开生成的文件目录位置
readme就是相关的生成说明。我们需要要MATALB EXCHANGE.DLL这个文件。
(8)添加生成的函数引用和MATLAB自动的矩阵运算的引用(dll文件都是,上面那个就是生成的函数,因为生成都是以dll存在的,因此要引用进来,MATLAB矩阵库的位置上面有对应引用进来就行)
(不过还是会提示这个问题,选了X64的就没问题,不过不用管这个了先,没问题)
(9)输入代码
上面两个就是MWArray的命名空间,下面那个就是生成函数的命名空间。
(12) 还有个地方,以防万一(始终复制)
和MATLAB一致
Matlab高级教程_第二篇:一个简单的混编例子的更多相关文章
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器
MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题
1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...
- Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换
1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序
1 MATLAB原文: 如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收. 2 通过gpuDevice命令观察当 ...
- Matlab高级教程_第二篇:Matlab2016a和VS2013混合
1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
随机推荐
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring JDK动态代理
JDK 动态代理是通过 JDK 中的 java.lang.reflect.Proxy 类实现的.下面通过具体的案例演示 JDK 动态代理的使用. 1. 创建项目 在 MyEclipse 中创建一个名称 ...
- sql server ------创建本地数据库 SQL Server 排序规则
sql server完整复制数据库 sql server导入导出方法 SQL Server 排序规则
- python try-except处理异常的常用方法分析
在写python程序时遇到异常想要进行处理时,可以使用try-except来处理,例如: try: 语句1 语句2 . . 语句N except .........: do something ... ...
- POJ 1502:MPI Maelstrom Dijkstra模板题
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...
- GPU 、APU、CUDA、TPU、FPGA介绍
购买显卡主要关注:显存.带宽和浮点运算数量 GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心.视觉处理器.显示芯片,是一种专门在个人电脑. ...
- JZOJPJ-C 8/21题解
原题大战D1 吐槽: T1 \(O(N^2)\; N \leq 26\) N大时还要写高精, 可以增加难度 T2 不给范围 T3 居然没有完全卡掉 不对应该赞美出题人 T4 PJ考个四边形不等式?? ...
- Django1.11模型类数据库操作
django模型类数据库操作 数据库操作 添加数据 1,创建类对象,属性赋值添加 book= BookInfo(name='jack',pub_date='2010-1-1') book.save() ...
- ZJNU 2349 - 抽抽抽
为4的倍数,列出所有可能情况再判断即可 处理输入的数据对4取模 可得 4444 2244 2222 1111 3333 1133 1223 1344 1124 3324 共十种情况 所以得出答案 #i ...
- 题解【[BJOI2012]算不出的等式】
题目背景emmm \[\text{首先特判掉p=q时的情况(ans = }p^2-1\text{)}\] \[\text{构造函数}f(k) = \left\lfloor \frac{kq}{p}\r ...
- [NOI2017]蚯蚓排队(链表+hash)
这题看题面感觉挺玄学的,但其实会挂链式hash就能暴力切了,就是纸老虎,考察选手的语文水平.不过三年没写挂链hash也应该写一下了…… 首先模数设成自然溢出ull,然后挂链时的模数取2^24.然后就可 ...