Есть ли способ использовать дескрипторы функций MATLAB в файлах MEX без функции mexCallMATLAB

В настоящее время я пишу файл MEX на C, чтобы ускорить код MATLAB, который сильно зависит от дескрипторов функций. К сожалению, мой файл MEX работает медленнее, чем должен, потому что мне приходится использовать mexCallMATLAB для оценки дескрипторов в MATLAB (как описано здесь).

Большинство дескрипторов функций представляют собой простые встроенные функции, которые принимают однородные случайные числа и генерируют случайные переменные. Типичный пример:

f = @(u) exp(norminv(u)) 

Несмотря на то, что дескрипторы функций используют встроенные функции MATLAB, мой код должен позволять пользователям использовать свои собственные дескрипторы функций, что не позволяет мне жестко кодировать функции в файле MEX.

В идеале я хотел бы предоставить файлу MEX способ оценить этот дескриптор функции без необходимости каждый раз использовать функцию mexCallMATLAB. Кто-нибудь знает, как такое можно сделать? Я открыт для любых ваших предложений.


person Berk U.    schedule 21.03.2012    source источник


Ответы (1)


Насколько я знаю, это единственный способ. Способ помочь со скоростью состоял бы в том, чтобы вызвать его только один раз - отправить ему вектор значений, которые понадобятся, и использовать возвращенный вектор в вашем файле mex.

person Taylor Southwick    schedule 22.03.2012
comment
Хм, я думал об этом, но это не сработает для этой конкретной ситуации. Как вы думаете, возможно ли, чтобы MATLAB генерировал код C из дескрипторов функций и каким-то образом включал/ссылался на них в файле MEX? - person Berk U.; 22.03.2012
comment
Вы можете сделать это через компилятор Matlab. Я никогда не использовал его (не владею им), но кажется, что он поможет с тем, что вам нужно - mathworks.com/support/tech-notes/1600/1622.html - person Taylor Southwick; 23.03.2012