В примере, на который вы ссылаетесь, последний оператор -
mxDestroyArray(array_ptr);
Вместо того, чтобы уничтожать массив, вам нужно вернуть его в качестве вывода вашей MEX-функции.Ваш исходный код MEX-функции C / C ++ должен иметь функцию с именем mexFunction
(точка входа для MEX-функции), которая выглядит следующим образом:
void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
Для возврата вывода из MEX-функцииназначьте его в массив plhs
, например:
plhs[0] = array_ptr; // instead of mxDestroyArray(array_ptr);
Скомпилируйте код в MEX-функцию (назовем его sparsetest
).Вызовите его из MATLAB следующим образом:
>> output = sparsetest;
Теперь output
- это переменная MATLAB, содержащая разреженную матрицу, созданную вами в вашей MEX-функции.
Что касается хранения данных в строке -основной формат, это невозможно.MATLAB обрабатывает только разреженные матрицы по столбцам.