我们在Matlab中使用C/C++时,需要传入和传出参数,以下我们将以实例完成该功能。
1、外部接口设计
a=test([1,1,1,2,4],4)
参数:b=[1,1,1,2,4]为输入的数组;4为计算参数p;a为返回数组,为p*b;
2、C程序设计
#include "mex.h"
void GetValueFunction(double *x, int dim,int functionNum, double y[]){//
//int length = 0;
//length = sizeof(x);///sizeof(x[0]);
//double *y=new double[sizeof(x)*dim];
mexPrintf("functionNum:%dn", functionNum);
if(functionNum == 1){
for(int i=0;i
} else {
for(int i=0;i
}
//for(int i=0;i
mexPrintf("*y=%dn",dim);
for(int i=0;i
for(int i=0;i
}
//设置接口
void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
{
double* a;
double b, c;
double *x,*y;
int mrows = mxGetM(prhs[0]);//获得输入数据矩阵的行数
int ncols = mxGetN(prhs[0]);//获得输入数据矩阵的列数
int dim = ncols;
mexPrintf("output nlhs = %d mrows=%d ncols=%dn", nlhs,mrows,ncols);
plhs[0] = mxCreateDoubleMatrix(mrows, ncols, mxREAL);//分配输出矩阵的内存
int functionNum = *(mxGetPr(prhs[1]));//第三个输入参数,第几个函数
x = mxGetPr(prhs[0]);
y = mxGetPr(plhs[0]);//获取输出指针的第一个参数a[]的地址
mexPrintf("input nrhs = %dn", nrhs);//nrhs输入参数的数量
mexPrintf("functionNum = %dn", functionNum);
mexPrintf("dim = %dn", ncols);
mexPrintf("y=");
for(int i=0;i
for(int i=0;i
GetValueFunction(x,ncols,functionNum,y);
}



