在VS中集成MATLAB引擎(Windows):入门指南

Matlab 内置的绘图工具可以可视化数据,在使用 C/C++ 作为主体编程语言时,可以通过调用 Matlab 引擎,再使用相关的语法,在.c/.cpp 脚本文件中利用 Matlab 绘图,从而避免数据的读写等,提高程序运行效率。

如何在 VS 中调用 Matlab 引擎

(1) 版本。Matlab 的版本需要和 VS 的版本需要匹配,具体可以打开 Matlab 的安装目录/bin/win64/mexopts 文件夹,里面可以看到当前版本的 Matlab 适配的 VS 版本(如下图)。另一种就是看年份,通常同一年的 VS 和 Matlab 都是适配的。

(2) 配置环境。配置 Matlab 引擎和配置外部动态库基本相同。右键VS项目→属性→VC++目录。

在①处添加 Matlab 安装目录下/bin/win64;在②处添加Matlab 安装目录下/extern/include;在③处添加Matlab 安装目录下/extern/lib/win64/microsoft;

在属性→连接器→输入的附加依赖项中添加对应的库文件,基础的绘图库有4个:libeng.lib;libmat.lib;libmex.lib;libmx.lib

测试程序

#include "stdio.h"

#include <math.h>

#include "engine.h" //添加MATLAB引擎头文件

#include <string.h>

int main()

{

//定义x,y数组并赋初值

int N = 20;

double x[20], y[20];

for (int i = 0; i < N; i++)

{

x[i] = i + 1;

y[i] = x[i] * x[i];

}

Engine* ep;   //定义MATLAB引擎指针变量

if (!(ep = engOpen(NULL))) //打开MATLAB引擎

{

printf("can't start MATLAB engine!");

exit(1);

}

//利用MATLAB API mxCreateDoubleMatrix函数生成矩阵

mxArray* xx = mxCreateDoubleMatrix(1, N, mxREAL);

mxArray* yy = mxCreateDoubleMatrix(1, N, mxREAL);

//mxGetPr获取指向输入、输出矩阵数据的指针

memcpy(mxGetPr(xx), x, N * sizeof(double));

memcpy(mxGetPr(yy), y, N * sizeof(double));

engPutVariable(ep, "xx", xx);

engPutVariable(ep, "yy", yy);

engEvalString(ep, "plot(xx, yy);"); //调用MATLAB中plot(x,y)函数

engEvalString(ep, "xlabel('x axis');");

engEvalString(ep, "ylabel('y axis');");

mxDestroyArray(xx); //释放内存

mxDestroyArray(yy);//释放内存

system("pause");

engClose(ep);

return 0;

}

程序能正常输出曲线图代表配置成功。有关 VS 中 Matlab 绘图引擎的详细使用,我们会在后续做更详细的介绍。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空