Verfasst am: 10.07.2018, 13:22
Titel: Fehler mit Dimensionen in einem Simulink-Modell
Moin,
erneut habe ich eine Frage, hoffentlich kann mir jemand helfen, da ich seit gestern früh daran festhänge und nahezu verzweifle.
Ich habe ein Simulink-Modell in dem ich in einem Matlab-Function Block in eine neue Matrix alle Zeilen aus einer anderen Matrix schreibe, die nicht = 0 sind.
Vorher habe ich eine Matrix mit den Dimensionen 3501x2. Diese sollte sich durch den oben genannten function-Block verkleinern, aber immer noch bei zwei Spalten bleiben.
Wenn ich die nachfolgenden Blocke auskommentiere sehe ich als Eingang in den Function-Block aus, dass der Eingang die Dimension 3501x2 hat. Fehlermeldung sieht folgendermaßen aus:
Zitat:
Data 'p_s_Stange_zz_ben' is inferred as a variable size matrix, while its properties in the Model Explorer specify its size as inherited or fixed. Please check the 'Variable Size' check box and specify the upper bounds in the size field.
Wenn ich nun in die check box gehe und die "Variable Size" anhake kommt folgende Fehlermeldung:
Zitat:
Output 'p_s_Stange_zz_ben' has variable size but the upper bound is not specified; explicit upper bound must be provided.
Ich werde aus beiden Fehlermeldungen nicht schlau, aber irgendwie bekommt es Maltab/Simulink nicht hin die Ausgangsdimension zu bestimmen, da hinter dem Block ein "?" ist. Das Bild davon habe ich in den Anhang gepackt.
Komisch ist auch, dass wenn ich die anderen Blöcke ein kommentiere (an denen sollten keine Fehler auftauchen, da diese vor der Änderung genauso funktioniert haben), sagt mir Matlab folgende Fehlermeldung:
Zitat:
Index expression out of bounds. Attempted to access element 2. The valid range is 1-1.
Dies liegt daran, dass Simulink nun p_s_Stange_zz als 1x1 Matrix annimmt, was ich überhaupt nicht mehr nachvollziehen kann. Im vorherigen function-Block steht folgendes.
Code:
function p_s_Stange_zz = fcn(p_B, p_B_int,x_int,p_s_Stange_int)
vielen Dank für die Antwort. Diesen Artikel hatte ich gestern auch noch gefunden, der hat mich dann auf die richtige Lösung geleitet
Nach ewigen rumprobieren habe ich dann mein Problem auch verstanden: Dadurch, dass ich eine Variable weiterleite, die in der Größe variiert, muss ich alle Eingänge und Ausgänge mit den größenvariablen Variablen auch so deklarieren. Dann musste ich noch noch den Ausgang als diskret angeben.
Da mir die Simulation dann zu lange gedauert hat, habe ich das Problem nun so gelöst, dass ich alle meine Matlab-function-Blöcke in einen einzelnen überführt habe. Das ist dann zwar nicht so übersichtlich, aber damit entfällt der diskrete Ausgang und die Simulation funktioniert wieder einwandfrei.
Viele Grüße
jersey
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.