Matlab - S-Functions en C

 
Vista:

S-Functions en C

Publicado por Juan Pablo (7 intervenciones) el 10/10/2008 22:06:20
Hola a todos,

Me encuentro trabajando con el toolbox Real Time Workshop Target, en donde todo me funciona salvo que la S function que estoy utilizando es de matlab y tiene que estar en C. Alguien sabe como puedo pasar rapidamente de una a la otra y si las S functions en C pueden llamar a funciones de matlab, en este caso en particular la funcion ADAPT de Redes neuronales.

Aqui esta el código de la Sfunction utilizada en Matlab. pa ver si me pueden ayudar.

gracias.

function [sys,x0,str,ts] = redcontrol(t,x,u,flag)

switch flag,
case 0
[sys,x0,str,ts] = mdlInitializeSizes; % Initialization
case 3
sys = mdlOutputs(t,x,u); % Calculate outputs
case { 1, 2, 4, 9 }
sys = []; % Unused flags
otherwise
error(['Unhandled flag = ',num2str(flag)]); % Error handling
end;

function [sys,x0,str,ts] = mdlInitializeSizes;

global net_cont;
global cont;

sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs=1;
sizes.NumInputs=2;
sizes.DirFeedthrough=2;
sizes.NumSampleTimes=1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0.1 0];

cont = 0;
load red
%net.trainParam.lr = 0.01;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [sys] = mdlOutputs(t,x,u)
global net_cont;
global pf;
global cont;
global Pi;
p={u(1);u(2)};
t={u(1)};
[net_cont,y,e,pf] = adapt(net_cont,p,t,Pi);
cont = cont + 1;
if cont == 20
save red net_cont
cont = 0;
end
sys = [y{1}];%,,net.IW{2}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder