ubuntu c/c++中调用matlab函数
来源:互联网 发布:数据大魔王txt下载 编辑:程序博客网 时间:2024/06/09 13:10
最近实验室一位伊拉克博士仁兄在写paper,要做仿真。需要在c++中调用matlab里面的函数。据说matlab已经有了动态链接库供调用,但是从网上百度google了下,暂时也没有找到比较详细的教程,就打算自己编译matlab某个函数的动态库。具体流程如下,以调用matlab中sin函数为例。
ubuntu12.04下的matlab安装请参照:
http://bbs.weiphone.com/read-htm-tid-6280022.html
1.编写mySin.m
function z = mySin(x) z = sin(x); end
2.编译libMySin.so
在matlab中打开mySin.m文件所在的路径,然后在matlab命令行中输入如下命令:
mcc -W cpplib:libMySin -T link:lib mySin -C
其中libMySin指的是生成的动态链接库的名字,mySin是matlab文件名。
3.编写cpp文件调用mySin,文件名为MainSin.cpp,和mySin.m在同一路径下
#include "mclmcrrt.h"#include "mclmcr.h"#include "mclcppclass.h"#include "matrix.h"#include <iostream>#include "libMySin.h"int main(void) { double a = 1.57; double b; // initialize lib,这里必须做初始化! if(!libMySinInitialize()) { std::cout << "Could not initialize libMySin!" << 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); mwA.SetData(&a, 1); // using mySin,调用我们自己写的函数 mySin(1, mwB, mwA); // get data b = mwB.Get(1, 1); printf("sin %f is %f\n",a, b); // 后面是一些终止调用的程序 // terminate the lib libMySinTerminate(); // terminate MCR mclTerminateApplication(); return 0; }
4.编写Makefile
LIBPATH = -L/home/zk/matlab_test/mySin -L/usr/local/MATLAB/R2013b/runtime/glnxa64 -lmwmclmcrrt -lMySinINCLUDEPATH = -I/usr/local/MATLAB/R2013b/extern/include/LD_LIBRARY_PATH = /home/zk/matlab_test/mySin:/usr/local/MATLAB/R2013b/runtime/glnxa64:$LD_LIBRARY_PATHexport LD_LIBRARY_PATHMainSin.o:MainSin.cppg++ -c MainSin.cpp $(INCLUDEPATH)MainSinApp:MainSin.og++ -o MainSinApp MainSin.o $(LIBPATH)./MainSinAppMainAppclean:rm -f *.o
LIBPATH 中:
/home/zk/matlab_test/mySi是我mySin.m文件所在的路径,编译的libMySin.so动态库所在的位置
/usr/local/MATLAB/R2013b/runtime/glnxa64是我电脑中matlab安装的路径,matlab动态库所在的位置
INCLUDEPATH也是matlab安装的路径,matlab头文件所在的位置。
5.在终端执行make命令就可以看到结果啦
make MainSinApp
0 0
- ubuntu c/c++中调用matlab函数
- ubuntu c/c++中调用matlab函数
- C调用MATLAB函数
- matlab中调用c语言函数
- MATLAB学习(五)MATLAB中调用C语言函数
- MATLAB调用C文件再在C文件中调用MATLAB函数(即mex文件中调用matlab函数)
- Matlab调用C语言函数
- C/C++调用Matlab函数
- MATLAB中调用C代码
- matlab中调用C代码
- MATLAB中调用.C程序
- C/C++ VS中调用matlab函数的方法
- c 调用 matlab engine 自定义函数
- MATLAB调用C/C++函数的方法
- MATLAB调用C/C++函数的方法
- MATLAB调用C/C++函数的方法
- 关于Matlab调用C函数的问题
- MATLAB调用C/C++函数的方法
- 【eclipse中的插件】有图有真相删除eclipse中的插件
- DECODE应用
- java自带线程池和队列详细讲解
- 数学问题:1000瓶酒找1毒酒
- Ubuntu管理开机启动项(服务)
- ubuntu c/c++中调用matlab函数
- 如何查看sql server数据库连接数
- sqlite3添加数据库到工程
- 浅析TCP字节流与UDP数据报的区别
- wordpress中thumbnail图片尺寸强制crop的二个方法
- 通过命令行管理AVD
- HashSet和TreeSet有和异同
- 电脑中删除的照片怎么才能找回来
- Core Python:Python中的针对函数处理的特殊方法