C/C++与Matlab混合编程实用函数简介

本文详细介绍了MATLAB引擎API的使用方法,包括数组创建、删除、类型判断等基本操作,以及如何通过API发送命令、获取输出和进行变量交互。适用于需要在C/C++程序中集成MATLAB计算能力的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载自vc与matlab连接的实用函数简介

1、新建一个double类型数组,可用函数mxCreateDoubleMatrix,函数形式如下:

mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag);
参数m和n为矩阵的函数和列数。ComplexFlag为常数,用来区分矩阵中元素是实数还是复数,取值分别为mxREAL和mxCOMPLEX

2、删除一个数组
void mxDestroyArray(mxArray *array_ptr); 参数array_ptr为要删除的数组指针。

3、创建一个字符串类型并初始化为str字符串
mxArray *mxCreateString(const char *str);

4、获得mxArray数组每一维上元素的个数
int mxGetM(const mxArray *array_ptr); //返回array_ptr对应数组第一维的元素个数(行数)
int mxGetN(const mxArray *array_ptr); //返回array_ptr对应数组其它维的元素个数,对于矩阵来说是列数。对于多维数组来说是 从第2维到最后一维的各维元素个数的乘积。

5、某一特定维的元素个数
const int *mxGetDimensions(const mxArray *array_ptr);
该函数返回array_ptr各维的元素个数保存在一个int数组中返回。对于常用的矩阵来说,用mxGetM和mxGetN两个函数就可以了。

6、通过mxGetNumberOfDimensions来获得数组的总的维数
int mxGetNumberOfDimensions(const mxArray *array_ptr); //返回数组的维数
void mxSetM(mxArray *array_ptr, int m); //设置数组为m行
void mxSetN(mxArray *array_ptr, int n); //设置数组为n列

7、判断mxArray数组类型
bool mxIsDouble(const mxArray *array_ptr);
bool mxIsComplex(const mxArray *array_ptr);
bool mxIsChar(const mxArray *array_ptr);
bool mxIsEmpty(const mxArray *array_ptr);
bool mxIsInf(double value);

8、对于常用的double类型的数组,用mxGetPr和mxGetPi两个函数分别获得其实部和虚部的数据指针
double *mxGetPr(const mxArray *array_ptr); //返回数组array_ptr的实部指针
double *mxGetPi(const mxArray *array_ptr); //返回数组array_ptr的虚部指针

9、向Matlab发送命令字符串
int engString(Engine *ep, Const char *string); 参数ep为函数engOpen返回的引擎指针,字符串string为要matlab执行的命令
函数返回值为0表示成功执行,返回1说明执行失败(如命令不能被Matlab正确解释或Matlab引擎已经关闭了)。

10、获取Matlab命令窗口的输出
函数声明:int engOutputBuffer(Engine *ep, char *p, int n);
参数ep为Matlab引擎指针,p为用来保存输出结构的缓冲区,n为最大保存的字符个数,通常就是缓冲区p的大小。该函数执行后,接下 来的engString函数所引起的命令行输出结果会在缓冲区p中保存。如果要停止保存,只需调用代码:engOutputBuffer(ep, NULL, 0)。

11、从Matlab引擎工作空间中获取变量
mxArray *engGetVariable(Engine *ep, const char *name);
参数ep为打开的Matlab引擎指针,name为以字符串形式指定的数组名。函数返回值是指向name数组的指针,类型为mxArray*

12、向Matlab引擎工作空间写入变量
int engPutVariable(Engine *ep, const char *name, const mxArray *mp);
参数ep为打开的Matlab引擎指针,mp为指向被写入变量的指针,name为变量写入后在Matlab引擎工作空间中的变量名。函数返回值为0表示写入变量成功,返回值为1表示发生错误。

13、调用引擎时显示/隐藏Matlab主窗口
int engSetVisible(Engine *ep, bool value);
参数ep为打开的Matlab引擎指针,value为是否显示的标志,取值true(或1)表示显示Matlab窗口,取值false(或0)表示隐藏Matlab窗口。函数返回值为0表示设置成功,为1表示有错误发生。

14、获得当前Matlab窗口的显示/隐藏情况,可以调用函数:
int engGetVisible(Engine *ep, bool *value);
参数ep为打开的Matlab引擎指针,Value为用来保存显示/隐藏情况的变量(采用指针方式传递)。函数返回值为0表示获取成功,为1表示有错误发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值