我是靠谱客的博主 冷傲毛巾,最近开发中收集的这篇文章主要介绍如何调用matlab中,c++程序里如何调用MATLAB中的函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们的c++程序有很多种方法调用Matlab中的函数,但是我最喜欢的方法是直接调用Matlab的动态库,这样生成的程序在没有安装Matlab的机子上也可以运行。具体的方法如下:

上面提到的Matlab“动态库”是指Matlab6.5的动态库,6.5以上不支持这样直接调用程序了,所以没有提供类似的动态库。安装MATLAB6.5后,在安装路径下的extern文件夹下就是我们要的所有东西了。

其中:

...externinclude,里的文件就是我们需要包含文件,将...externinclude和...externincludecpp添加到VS里的工具选项项目和解决方案包含文件中;

...externlib,里的文件就是我们在编译时要用到的库文件,将...externlibwin32和...externlibwin32microsoftmsvc60添加到VS里的工具选项项目和解决方案库文件中;

...externlibwin32dllbinwin32里的文件就是动态库文件,发布程序时,我们将这些文件拷贝到和我们程序.exe文件同级的目录下,一起发布,这样目标机上不用安装matlab也可以运行了。

下面举个在C++中如何调用Matlab函数的例子:

int CurveSmooth(double *x1,double* y1,const int count1,double *x2,double *y2,const int count2)

{

//启用Matlab自动内存管理

mlfEnterNewContext(0, 0);

mxArray *x = NULL;                    //中心波长系数中间一列的矩阵

mxArray *y = NULL;                     //中心波长系数中间一列的矩阵

mxArray *xi = NULL;                      //输入的像元向量矩阵

mxArray *yi = NULL;                    //输出的像元向量矩阵

//封装为matlab矩阵

mlfAssign(&x, mlfDoubleMatrix(1,count1,x1, NULL));

mlfAssign(&y, mlfDoubleMatrix(1,count1,y1, NULL));

mlfAssign(&xi, mlfDoubleMatrix(1,count2,x2, NULL));

//开始进行样条插值

mlfAssign(&yi,mlfSpline(x,y,xi));

//获取矩阵数据指针

double *vo=mxGetPr(yi);

//填充输出数组

for (int i=0;i

{

y2[i]=vo[i];

}

mxDestroyArray(x);

mxDestroyArray(y);

mxDestroyArray(xi);

mxDestroyArray(yi);

//关闭Matlab内存自动管理

mlfRestorePreviousContext(0, 0);

return 1;

}

以上为计算曲线样条插值的函数。

最后

以上就是冷傲毛巾为你收集整理的如何调用matlab中,c++程序里如何调用MATLAB中的函数的全部内容,希望文章能够帮你解决如何调用matlab中,c++程序里如何调用MATLAB中的函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部