VS2015,matlab2016混合编程
来源:互联网 发布:linux命令行退出全屏 编辑:程序博客网 时间:2024/06/06 01:16
在参考一些资料之后,终于成功实现了在vs2015和matlab2016a下的混合编程,特此总结记录。
转载自:http://blog.sina.com.cn/s/blog_715d0ae30100rtd5.html
1,首先装编译器
Matlab里键入mex
2,写C++函数
函数的形式必须是
void
nlhs:输出参数个数
plhs:输出参数列表
nrhs:输入参数个数
,不过函数名可以随便取的。注意:保存的文件名就是将来在MATLAB中调用的函数名,而不是这里的函数名。
下面给出一个例子,目的是想截取数组的部分元素组成新的数组
输入参数3个,目标数组,截取的行(向量),截取的列(向量)
输出参数2个,截取后数组,数组维数信息
在函数中展示了如何传入传出参数,以及如果从参数列表中取出每一个参数,MATLAB数据和C++数据的互相转换,还有一些输出函数等。
新建一个ResizeArray.cpp文件(ResizeArray将作为MATLAB调用的函数名),写入下面代码
/*这里有问题提示找不到mex.h,该文件在matlab的安装路径下,例如我的是C:\Program Files\MATLAB\R2016a\extern\include,此时如果你只将
mex.h复制到你的C/C++工程下,亦然会报错,原因在于mex.h中又包含了其它的matlab头文件,所以最好的办法是将
C:\Program Files\MATLAB\R2016a\extern\include添加到当前工程的外部依赖项中,具体办法是:工程-属性-配置属性-C/C++-常规-附加包含目
录:加上头文件存放目录参考:http://bbs.csdn.net/topics/390760962*/
#include "mex.h"//author: 汪帮主 2010.05.05
//MATLAB调用形式: [resizedArr, resizedDims] = ResizeArray(arr, selRows, sekCols)
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
}
3,编译C++函数为MEX函数
将ResizeArray.cpp放在MATLAB当前目录中,在MATLAB中输入mex ResizeArray.cpp,编译成功后将会生成ResizeArray.mexW32
4,调用函数
arr=[11:19;21:29;31:39;41:49;51:59;61:69];
selRows=[1 3];
selCols=[2:4 5 9];
[rarr,rdims]=ResizeArray(arr,selRows,selCols);%原文这个地方有误
arr中数据:
11
21
31
41
51
61
rarr中数据:
12
32
rdims为:
2
5
OK,done!
- VS2015,matlab2016混合编程
- VS2015+MATLAB2016b混合编程
- VLFeat+MATLAB2016+Vs2015+win10 64bit
- VS2015 MATLAB混合编程之COM组件
- Matlab2016 与vs2015 混编(生成dll动态链接库)
- 混合编程
- Matlab2016.11.1
- VS2015+Fltk1.3.3 编程
- VS2015自定义编程背景
- 【Fltk】Fltk1.3.3+VS2015 编程
- CUDA8.0+OpenCV2.4.13+VS2015+Win10+TBB混合编译
- matlab2014调用vs2015进行混合编译生成mex文件
- VC&MATLAB混合编程
- c/c++混合编程
- VC++;Matlab;混合编程
- 混合语言编程
- DSP混合编程规则
- C/C++混合编程
- 需要关注的技术网站 & 不错的个人博客站点
- 移动
- Linux下的环境变量
- 差分约束系统
- 从安卓的Looper到iOS的RunLoop
- VS2015,matlab2016混合编程
- python中的python from __future__ import division
- C++编程入门系列之六(算法的基本控制结构之选择结构)
- IE8解决new Date("2016-9-5")返回NaN问题
- C#控制台基础 将char类型数组转换为string字符串 new string()
- .NET 环境中使用RabbitMQ
- unity组件的添加和删除
- 【leetcode】Insert Interval
- 特殊数字