Tengo algo similar a este diagrama de bloques siguiente simplificado en Simulink. Se ve bastante desordenado.
Quieroreemplazarunbloquedesumade3puntosporunbloquedefunción,manteniendolamismasalida.
Primerocomencécolocandoelcódigodentrodelbloquedefunciones:
functiony=fcn(u)sys1=tf(0.5,[1004]);sys2=tf([30.5],[1015]);sys3=tf(1,[11]);y=sys1+sys2+sys3;
Sinembargo,recibíunerrorquedecíaqueSimulinknoadmitelageneracióndecódigo.
"La clase 'tf' no admite la generación de código".
Entonces encontré un problema similar aquí: enlace
Estoy intentando implementar una función extrínseca o 'función de envoltura' con alguna dificultad. Creé un nuevo script llamado myWrapper.m, que contiene el mismo código:
function y = myWrapper(u)
sys1 = tf(0.5,[1 0 0 0 4]);
sys2 = tf([3 5],[1 0 15]);
sys3 = tf(1,[1 1]);
y = sys1 + sys2 + sys3;
y la función MATLAB editada en:
function y1 = fcn(u1)
y1 = myWrapper(u1);
El error persiste.
De alguna manera quiero acceder al archivo myWrapper.m
desde el bloque de funciones de MATLAB. ¿Algún indicador sobre cómo debería hacerse esto? Siguiendo el enlace anterior y los documentos oficiales estoy terminando con algo como esto en mi bloque de función MATLAB:
function y = fcn(u)coder.extrinsic('myWrapper')
y = myWrapper(u);
El último código anterior es sintácticamente incorrecto y no sé cómo se debe hacer. MATLAB corrige automáticamente el código anterior para:
function y = fcn(u,coder,extrinsic, myWrapper )
y = myWrapper(u);
que no es lo que quiero.
Se agradecería cualquier consejo o sugerencia sobre cómo se podría hacer esto.
Se hizo una pregunta similar en el foro de MathWorks aquí , hace dos años, sin respuesta.