Работа с предварительно выделенными массивами в mex-функции Matlab
Я написал простую mex-функцию, которая обновляет уже выделенный массив Matlab:
mex_test_array.c
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *x = mxGetPr(prhs[0]);
x[0] = 3.1416;
}
Тест 1:
>> y = zeros(2, 2);
>> mex_test_array(y);
>> y
y =
3.1416 0
0 0
Тест 2:
>> y = zeros(2, 2);
>> mex_test_array(y(:, 1));
>> y
y =
0 0
0 0
Почему он не работает на субматрице (тест 2)? Можно ли заставить его работать?
Пожалуйста, порекомендуйте.
Замечание: я понимаю, что обновление входных массивов - это не то, как mex-файлы должны записываться, и я знаю, как вернуть массивы из mex. Причина, по которой я попробовал эту технику, состоит в том, чтобы избежать выделения памяти массивов дважды.