Я написал простую функцию 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. Причина, по которой я попробовал этот метод, заключается в том, чтобы избежать двойного выделения памяти массивов.