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

Ответы на вопрос(1)

Ваш ответ на вопрос