由于mexFunction与直接在C语言里编程不同,所以指针的运用很繁琐,尤其是面临着参数传入传出的问题。这里,我将matlab中生成的一个三维矩阵传到mexFunction中,然后进行传出到matlab。当然,我们可以根据自己的需要在mexFunction中进行矩阵的各种操作和计算。
一、三维矩阵维度参数的提取
int M,N,K; //定义三个维度的元素个数
cons int *dim_array;
dim_array=mxGetDimensions(prhs[0]);
#include<stdio.h>
#include"mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *p;
double *page;
// mwSize dims[3];
int i,j,k,M,N,K;
int ii=0;
const int *dim_array;
int numberofdims;
numberofdims=mxGetNumberOfDimensions(prhs[0]);
dim_array=mxGetDimensions(prhs[0]);
p=mxGetPr(prhs[0]);
M=*dim_array;sanwei
N=*(dim_array+1);
K=*(dim_array+2);
printf("%d %d %d \n",M,N,K);
//dims[3]=(M,N,K);
plhs[0]=mxCreateNumericArray(mxGetNumberOfDimensions(prhs[0]),mxGe