Как получить два выхода из функции Matlab C Mex? - PullRequest
1 голос
/ 16 июня 2011

Я знаю, как написать базовую функцию C Mex с одним выходом типа double. Я пытался написать C Mex с двумя выходами, но я получил ошибки нарушения сегментации. Первый вывод - двойной, второй - целое число. Вот код, в котором я пытаюсь назначить выходные указатели:

plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //works fine
plhs[1] = mxCreateNumericArray(1, 1, mxINT32_CLASS, mxREAL); //causes segmentation violation

Я искал в Интернете, но почти во всех примерах есть только один выход или выходы одного типа. Что нужно сделать для получения двух выходных данных, одного типа double, другого типа integer?

1 Ответ

5 голосов
/ 16 июня 2011

Во-первых, вы неправильно вызываете mxCreateNumericArray.Вам нужно сделать что-то вроде этого:

#include "mex.h"

void mexFunction( int nlhs, mxArray * plhs[], 
                  int nrhs, const mxArray * prhs[] ) {
    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
    if ( nlhs > 1 ) {
        mwSize nd = 2;
        mwSize dims[] = { 3, 4 };
        plhs[1] = mxCreateNumericArray(nd, dims, mxINT32_CLASS, mxREAL);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...