2010-04-28 15 views
6

Vorrei utilizzare una funzione MATLAB personalizzata in Simulink. Finora l'ho fatto posizionando un blocco funzione MATLAB incorporato. Tuttavia, se la funzione personalizzata contiene un'altra funzione personalizzata, il processo di compilazione fallisce.Implementazione di funzioni MATLAB personalizzate in Simulink

Ecco l'esempio della funzione che sto cercando di incorporare nella simulazione:

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; 

dove initializeLq e getLr sono funzioni personalizzate pure.

Esiste un metodo per implementare la funzione sopra descritta nella simulazione?

+0

Penso che la risposta di MikeT sia corretta, ma vi offro questo: non utilizzare un blocco funzione MATLAB incorporato nel modello perché questo blocco causa il funzionamento del modello molto lentamente. – Elmoya

+0

Se il modello è in esecuzione lentamente, è consigliabile avvolgere il blocco EML con un diagramma di flusso di stato. Ciò eliminerà la copia di input e output su ogni passo temporale che può rendere le funzioni EML al di fuori dei diagrammi dello stato (nelle versioni precedenti di MATLAB , almeno) meno efficiente. –

risposta

1

È necessario utilizzare il comando eml.extrinsic per chiamare qualsiasi funzione MATLAB esterna da un blocco EML. Ad esempio, è possibile inserirlo nella parte superiore della funzione EML,

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

per consentire a tali funzioni di essere richiamate. Per ulteriori informazioni, vedere lo documentation

Problemi correlati