C++ 调用 Matlab函数,混合编程
来源:互联网 发布:智能小车惯性导航算法 编辑:程序博客网 时间:2024/06/06 00:19
1、Matlab:
mbuild -setup;
mex -setup;选择相应的vs版本号
2、编写Matlab测试小程序:
function [z] = MyAdd(x,y)
z=x+y;
end
3、Matlab 编译成dll之类的文件
mcc -W cpplib:MyAdd -T link:lib MyAdd.m -C
(生成了
libMyAdd.dll
libMyAdd.h
libMyAdd.ctf
libMyAdd.lib
这四个是要用到的文件)
4、建立vs工程并把上述4个文件考到工程目录中,相应配置如下图所示:
\
5、测试程序:
#include "MyAdd.h"
int main(void)
{
double a = 6;
double b = 9;
double c;
// initialize lib,这里必须做初始化!
if( !MyAddInitialize())
{
std::cout << "Could not initialize libMyAdd!" << std::endl;
return -1;
}
// 为变量分配内存空间,可以查帮助mwArray
mwArray mwA(1, 1, mxDOUBLE_CLASS); // 1,1表示矩阵的大小(所有maltab只有一种变量,就是矩阵,为了和Cpp变量接轨,设置成1*1的矩阵,mxDOUBLE_CLASS表示变量的精度)
mwArray mwB(1, 1, mxDOUBLE_CLASS);
mwArray mwC(1, 1, mxDOUBLE_CLASS);
// set data,不用我解释了吧,很简单的,调用类里面的SetData函数给类赋值
mwA.SetData(&a, 1);
mwB.SetData(&b, 1);
// using my add,掉我自己写的函数
MyAdd(1, mwC, mwA, mwB);
// get data,不用我解释了吧,很简单的,调用类里面的Get函数获取取函数返回值
c = mwC.Get(1, 1);
printf("c is %f\n", c);
// 后面是一些终止调用的程序
// terminate the lib
MyAddTerminate();
// terminate MCR
mclTerminateApplication();
return 0;
}
6、运行结果
- MATLAB与C++/MFC混合编程;调用MATLAB函数
- Matlab与C/C++混合编程 MEX(Matlab调用C函数)
- C++ 调用 Matlab函数,混合编程
- MATLAB调用C/C++进行混合编程
- Matlab、C混合编程(Matlab调用C)
- Matlab C混合编程
- matlab C混合编程
- Matlab C混合编程
- matlab/C 混合编程
- c与matlab混合编程之dll调用
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- Matlab与C/C++混合编程调用OpenCV
- matlab/C混合编程--mex文件的编写、编译、调用
- View.setTag()与View.getTag()的作用
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
- Javascript 面向对象编程(一):封装
- CSS div文本垂直居中
- 【Git学习笔记】分支管理策略
- C++ 调用 Matlab函数,混合编程
- 查看php脚本当前的内存消耗情况
- LotusScript 学习笔记4
- 高德地图自定义infowindow样式,textview设置文字在背景图中的位置
- App Store审核指南
- 简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。
- HBase简介(很好的梳理资料)
- SQLiteDatabase中query、insert、update、delete方法参数说明
- 如何安装cocos2d-x-3.2建立项目