2013-08-07 2 views
5

Мне нужно переписать некоторый код matlab на C, который затем будет встроен в Matlab, используя MEX еще раз. До сих пор я читал несколько руководств и примеров того, как это работает для простых структур данных. (Я никогда не делал этого раньше, хотя я бы считал себя опытным как в Matlab, так и в C).Доступ к классам Matlab в MEX/C-коде

Так вот проблема:

Я дал что-то вроде этого

classdef MyClass 
    properties 
      foo; 
      bar; 
      blub; 
      somethingElse; 
    end 

    methods 

      function obj = myFun(obj) % really just some random example code 
       obj.foo = obj.bar; 
       obj.blub = 42; 
       for i = 1:length(obj.somethingElse) 
        obj.somethingElse(i) = i*i; 
       end; 
      end 
    end 
end 

Я хочу переписать myFun как/C-функции MEX. Если я передаю класс MEX-функции, как я могу получить доступ к различным свойствам этого класса?

Благодаря

ответ

9

Вы следующие функции в MEX API:

mxGetProperty и mxSetProperty

Их использование эквивалентно:

value = pa[index].propname; 

pa[index].propname = value; 

Обратите внимание, что эти функции создают ep копий данных. Для работы с общими данными есть undocumented functions.