2013-08-07 11 views
5

Muszę przerobić trochę kodu Matlab na C, który następnie zostanie osadzony w Matlab przy użyciu MEX jeszcze raz. Do tej pory przeczytałem kilka tutoriali i przykładów, jak to działa dla prostych struktur danych. (Nigdy wcześniej tego nie robiłem, chociaż uważałbym, że mam doświadczenie zarówno w Matlab, jak i C).Dostęp do klas Matlab w kodzie MEX/C

Więc tu jest problem:

dałem coś takiego

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 

chcę przepisać myFun jako MEX/C-funkcji. Jeśli przekazuję klasę do funkcji MEX, w jaki sposób mogę uzyskać dostęp do różnych właściwości tej klasy?

Dzięki

Odpowiedz

9

masz następujące funkcje w API MEX:

mxGetProperty i mxSetProperty

Ich stosowanie jest równoważne:

value = pa[index].propname; 

pa[index].propname = value; 

Zauważ, że te funkcje tworzą de kopie danych. Istnieje undocumented functions do pracy z udostępnionymi danymi.