C++与MATLAB混合编程:MEX编程

本文介绍了如何在MATLAB中利用MEX文件进行C++混合编程,强调了MEX文件作为动态链接库的优势,用于加速MATLAB中的计算。通过设置编译器环境,如mex -setup指定VS2010,然后编写包含""mex.h""头文件的CPP源码,最后使用mex命令编译。在MATLAB中调用时,应注意以cpp文件名为函数名,如z = mexPlus(x, y),而非myplus。" 117231784,10465472,算法解析:寻找最小的矩阵包含所有 '*',"['算法', 'Java']
摘要由CSDN通过智能技术生成

在MATLAB中可调用的C或Fortran语言程序称为MEX文件。MATLAB可以直接把MEX文件视为它的内建函数进行调用。MEX文件是动态链接的子例程,MATLAB解释器可以自动载入并执行它。MEX文件主要有以下用途:       

  • 对于大量现有的C或者Fortran程序可以无须改写成MATLAB专用的M文件格式而在MATLAB中执行。        
  • 对于那些MATLAB运算速度过慢的算法,可以用C或者Frotran语言编写以提高效率。
具体操作过程:
  1. 在MATLAB中用命令mex -setup配置环境,找到对应的VS2010编译器
  2. 编写CPP源程序,源程序必须包括头文件#include "mex.h"(其中包括mex编程所需要的如矩阵等的定义)
  3. 通过MATLAB输入语句mex mexPlus.cpp。
  4. 调用时候以cpp文件名作为MATLAB函数调用,如下,调用方法为z = mexPlus(x, y);    z = myplus(x, y)是错误的。
源程序如下
#include "mex.h"

void myplus(double x[], double y[], double z[])
{
	z[0] = x[0] + y[0];
}



void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
	double *x, *y, *z;
	int mrows0, ncols0;
	int mrows1, ncols1;

	// 检查输入输出变量的个数
	if (nrhs !
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值