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高级教程_第二篇:一个简单的混编例子的更多相关文章

  1. Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器

    MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...

  2. Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)

    1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...

  3. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

    1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...

  4. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题

    1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...

  5. Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题

    1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...

  6. Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换

    1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...

  7. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序

    1 MATLAB原文: 如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收. 2 通过gpuDevice命令观察当 ...

  8. Matlab高级教程_第二篇:Matlab2016a和VS2013混合

    1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 ...

  9. Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换

    Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...

随机推荐

  1. SASS - 环境搭建

    SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...

  2. pycharm 的 使用 设置智能目录 Pycharm 断点跳转及 Step Over/Step Into/Step Out 等的区别

    pycharm  右键点击文件夹  有个mark directiory as  根据需要给目录进行设置 Pycharm调试程序时,有时需要直接从第一个断点跳转至第二个断点,如果还是用单步调试的话就非常 ...

  3. h5-transform-3d

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 百度网盘下载神器 PanDownload v2.0.9(破解版、不限速)

    一直用这个软件来下载百度网盘的东西,不限速,贼爽.  链接:https://pan.baidu.com/s/1UjF47YWd2v9x52c5sjhutQ 提取码:v9pe 也可以直接到官网下载:ht ...

  5. JavaScript 之 原型及原型链

    对象[回顾] 通过字面量创建对象 //通过字面量创建对象 var obj1 = { name:'Jack', age: 18 } 通过系统自带的构造函数构造对象 // 通过系统自带的构造函数构造对象 ...

  6. Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path 解决过程

    原因:log4j-over-slf4j和slf4j-log4j12是跟Java日志系统相关的两个jar包,如果同时出现,就可能会引起堆栈异常 解决:找到依赖冲突发生位置,排除一个即可. 问题是 如何找 ...

  7. APP-计算器

    在网课上学习了计算器的制作方法,并自己做了小常识,看完一便后,感觉自己会了,思想也明白了,但是当关掉视频真正开始做的时候会发向许多的问题,自己在前的好多语法用的并不是很熟练,但是反复的查阅资料,观看教 ...

  8. 拷贝构造函数[c++]

    拷贝构造函数何时会被调用? 1. 对象以值传递的方式传入函数参数 2.对象以值传递的方式从函数返回 3.对象需要通过另外一个对象进行初始化 下面我们来看代码: //#include <iostr ...

  9. 35. docker swarm dockerStack 部署 投票应用

    1. 编写 docker-compose.yml # docker-compose.yml version: "3" services: redis: image: redis:a ...

  10. LocalStorage基础知识小结

    cookie中每条cookie的存储空间为4k,localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同. localStorage的写入,loca ...