Отличный вопрос. Возможно, вам придется разбить это на две разные mex-функции: одну, которая вычисляет инициализацию и возвращает ее результаты, и другую, которая выполняет вашу функцию.
[heavyCompResults,otherHeavyResults] = initComputation(initParams);
Тогда:
performComputation(compParams,heavyCompResults,otherHeavyResults);
С другой стороны, вы могли бы записывать вещи в файл, а не передавать его через Matlab.
initComputation(initParams,initResultsFname); %writes initResultsFname
Тогда:
performComputation(compParams,initResultsFname); %reads initResultsFname
Еще одна альтернатива:
Превратите ваш код в DLL и используйте функцию loadLibrary
в Matlab . Таким образом, когда вы создаете статический объект, он, вероятно, должен оставаться в памяти между вызовами. Но я не проверял это.