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 ...
随机推荐
- python从命令窗口启动脚本 创建并写入内容到文件示例
写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...
- Cannot access android.support.v4.app.*
解决办法: 添加到受影响的 module build.gradle 中(比如app的gradle文件根代码下) configurations.all { resolutionStrategy.each ...
- 用Python读取一个文本文件并统计词频
刚刚在写文章时360浏览器崩溃了,结果内容还是找回来了,感谢博客园的自动保存功能!!! ------------恢复内容开始------------ 最近在学习Python,自己写了一个小程序,可以从 ...
- part6 城市页面搜索内容开发
keyword 监听时间做一个节流处理 keyword为input输入的内容 //当逻辑卡壳的时候 可以试着重启服务器,浏览器 当搜索内容出现很多的时候 内容无法滚动 可以引入 better-scro ...
- 洛谷 P2658 汽车拉力比赛
题目传送门 解题思路: 二分答案,然后bfs验证,如果从一个路标可以达到其它所有路标,则答案可行.知道找到最佳答案. AC代码: #include<iostream> #include&l ...
- 腾讯大佬告诉你,写Python到底用什么IDE合适
不管你是 Python 新手还是老鸟,肯定纠结过一个问题: 到底用什么编辑器写 Python 代码好? 为此,我们调查了数十位鹅厂程序猿们爱用的 Python IDE,从他们对每款编辑器的看法中,也许 ...
- vue样式的动态绑定
true显示样式,flase不显示 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Python 重新加载模块
每个Python文件中的import modulename只被加载一遍,如果在运行过程中,这个Module被更改了,即使在在interpretor中运行import 语句也没用. 可以使用import ...
- Android studio中2种build.gradle文件介绍
根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript { repositories { google() //声明代码托管仓库G ...
- python爬虫--cookie反爬处理
Cookies的处理 作用 保存客户端的相关状态 在爬虫中如果遇到了cookie的反爬如何处理? 手动处理 在抓包工具中捕获cookie,将其封装在headers中 应用场景:cookie没有有效时长 ...