Ich möchte eine benutzerdefinierte MATLAB-Funktion in Simulink verwenden. Bis jetzt habe ich es getan, indem ich einen eingebetteten MATLAB Funktionsblock platzierte. Wenn die benutzerdefinierte Funktion jedoch eine andere benutzerdefinierte Funktion enthält, schlägt der Kompilierungsprozess fehl. HierImplementieren von benutzerdefinierten MATLAB-Funktionen in Simulink
ist das Beispiel der Funktion Ich versuche, in der Simulation einzubinden:
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;
wo initializeLq
und getLr
sind auch kundenspezifische Funktionen.
Gibt es eine Methode, um die obige Funktion in der Simulation zu implementieren?
Ich denke MikeT Antwort ist richtig, aber ich biete Ihnen dies: Verwenden Sie keinen eingebetteten MATLAB-Funktionsblock in Ihrem Modell, weil dieser Block das Modell sehr langsam ausgeführt wird. – Elmoya
Wenn Ihr Modell langsam läuft, möchten Sie möglicherweise den EML-Block mit einem Stateflow-Diagramm umhüllen. Dadurch wird das Kopieren von Ein- und Ausgängen in jedem Zeitschritt überflüssig, sodass EML-Funktionen außerhalb von Stateflow-Diagrammen (in älteren Versionen von MATLAB) ausgeführt werden können (zumindest) weniger effizient. –