Ну, вы можете #include <string.h>
и заменить цикл простой и простой копией памяти: memcpy(Out,K,nStep * sizeof(*K));
Другое, возможно, более уродливое решение - выделить достаточно памяти для хранения всех итераций в Out
затем перераспределите память с помощью mxRealloc
, чтобы Matlab мог правильно отслеживать распределение памяти.
plhs[0] = mxCreateNumericMatrix(nIterations,1, mxDOUBLE_CLASS, mxREAL);
Out = (double*) mxGetData(plhs[0]);
// draw up to nIterations numbers
for (int i=0; i<nIterations;i++){
Out[i] = Xi(rg);
nStep++;
if (Out[i]>0.2){break;}
}
// reallocate memory and set nb of rows
mxSetData(plhs[0],mxRealloc(Out,nStep * sizeof(*Out)));
mxSetM(plhs[0],nStep);