2010-04-28 8 views
6

Me gustaría utilizar una función personalizada de MATLAB en Simulink. Hasta ahora lo he hecho colocando un bloque de función MATLAB incrustado. Sin embargo, si la función personalizada contiene otra función personalizada, el proceso de compilación falla.Implementación de funciones personalizadas de MATLAB en Simulink

Aquí está el ejemplo de la función que estoy tratando de incrustar en la simulación:

function [c, d, iterationsCount] = decodeLDPC(y, H, variance) 
Lci = initializeLq(y, H, variance); 
Lr = getLr(Lci); 
[Lq, c] = getLq(Lci, H, Lr); 
iterationsCount = 1; 

while(sum(mod(c * H', 2)) ~= 0) 
    Lr = getLr(Lq); 
    [Lq, c] = getLq(Lq, H, Lr); 
    iterationsCount = iterationsCount + 1; 
end; 
G = getGeneratorMatrix(H); 
d = c/G; 

donde initializeLq y getLr son funciones personalizadas también.

¿Existe algún método para implementar la función anterior en la simulación?

+0

Creo que la respuesta de MikeT es correcta, pero se lo ofrezco: no use un bloque de función MATLAB incrustado en su modelo porque este bloque hace que el modelo se ejecute muy lentamente. – Elmoya

+0

Si su modelo se ejecuta lentamente, quizás desee envolver el bloque EML con un diagrama de flujo de estado. Esto eliminará la copia de entradas y salidas en cada paso de tiempo que pueda hacer que las funciones EML estén fuera de los diagramas de flujo de estado (en versiones anteriores de MATLAB , al menos) menos eficiente. –

Respuesta

1

Debe usar el comando eml.extrinsic para llamar a cualquier función externa de MATLAB desde un bloque EML. Por ejemplo, puede poner esto en la parte superior de su función EML,

eml.extrinsic('getLr', 'initializeLq'); 

para permitir que se llamen esas funciones. Para obtener más información, consulte documentation

Cuestiones relacionadas