Я пытаюсь передать в качестве аргумента мексфункции целое число, представляющее количество столбцов для mxCreateDoubleMatrix. Это целое число не должно использоваться где-либо еще, кроме основной функции mexFunction.
Каким-то образом это не работает.
// mex function for calling c++ code .
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
char *input_buf;
size_t buflen;
double ncols;
double *result_final;
double *result_second;
/* get the length of the input string */
buflen = (mxGetM(prhs[0]) * mxGetN(prhs[0])) + 1;
/* copy the string data from prhs[0] into a C string input_ buf. */
input_buf = mxArrayToString(prhs[0]);
/* copy the int from prhs[0] to decide on length of the results. */
ncols = (int) (size_t) mxGetPr(prhs[1]);
plhs[0] = mxCreateDoubleMatrix(1, ncols, mxREAL);
plhs[1] = mxCreateDoubleMatrix(1, ncols, mxREAL);
result_final = mxGetPr(plhs[0]);
result_second = mxGetPr(plhs[1]);
/* Do the actual computations in a subroutine */
subroutine(input_buf, buflen, result_final, result_second);
}
Если я вычеркну строку ncols, все остальное будет работать как положено. Я не включил ncols в качестве входных данных для подпрограммы, потому что она на самом деле не используется там, а только в основном, для определения размера выходного массива.
Ожидается, что у меня будет матрица 1x100 для выходного массива, если я вызову myfun ('examplefile.txt', 100), вместо этого матрица, которая отображается в конце вызова, имеет бесконечное / очень длинное число столбцов. .
Кто-то может помочь с этим?