我是 mex 类型编程的新手,基本上我正在编写我的第一个 mexfunction,我遇到了一个愚蠢的问题。我附上我的部分代码:
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
int mrows,ncols;
mrows = mxGetM(prhs[0]);
ncols = mxGetN(prhs[0]);
int numElements = ncols;
size_t size = numElements * sizeof(float);
float *in_A = (float *)mxMalloc(size);
float *in_B = (float *)malloc(size);
float *out_C = (float *)malloc(size);
if (in_A == NULL || in_B == NULL ||out_C == NULL)
{
mexErrMsgTxt("Failed to allocate host vectors!\n");
}
if (nrhs != 2)
mexErrMsgTxt("Two inputs required. A vector and a multiplier");
if (nlhs != 1)
mexErrMsgTxt("One output required. The resulting vector");
in_A = (float *)mxGetPr(prhs[0]);
in_B = (float *)mxGetPr(prhs[1]);
//printf("%f %f\n", in_A[2], in_A[1]);
//mexPrintf("%d\n", prhs[1]);
plhs[0] = mxCreateDoubleMatrix(mrows,ncols, mxREAL);
out_C = (float *)mxGetPr(plhs[0]);
add_two_vectors(in_A,in_B,out_C);
}
该函数add_two_vectors(float* A,float* B,float* C)
正在运行,但是当我在 mexfunction 中运行脚本时,我遇到了问题。它还可以正确读取nrows和ncols变量。问题是我无法在函数中插入正确的输入。我试图打印一些向量元素,但它打印的元素与输入向量元素不同。我这样称呼 mexfunction a = addVector([1.1 2.2 355],[2.5 45 5.5])
。有人可以启发我吗?
先感谢您。
PS:Matlab 2011a,VS 2010,Win 7 64x。