Verfasst am: 29.08.2011, 16:59
Titel: Objekt mit variablem Namen löschen
Hallo,
Code:
global selectedModel;
workspace_vars = evalin('base','who');
for i=1:size(workspace_vars,1) ifstrcmp(workspace_vars(i), selectedModel.name) delete(workspace_vars(i));
end end
Das führ zu dieser Fehlermeldung: ??? Error using ==> delete
Argument must contain a string.
Die obige Fehlermeldung ist mir klar. Leider habe ich keinen Weg gefunden das Objekt, dessen Name in workspace(i) gespeichert ist, zu löchen.
Hat jemand eine Idee wie das funktioniert?
Du musst bei den Cells auch {} benutzen, nicht (). Das habe ich nicht verstanden, bitte genauer erklären. Vielen Dank!
Übrigens solltest du dir Gedanken zu der Grundstruktur deines Programms machen, Variablen aus Funktionen zu löschen ist sehr unschön. Bzgl. der Performance? Bei diesem Objekt handelt es sich um ein Klassenobjekt, welches entweder angelgt wird oder falls es bereits exisitiert gelöscht werden soll und dann neu angelegt wird. Es gibt einen Parameterbereich mit welchem das Objekt jeweils initialisiert wird. Die Klasse besitzt diverese Funktionen die für jede Paramterkonstellation aufgerufen werden.
Unter diesen Umständen macht es doch Sinn jeweils ein neues Klassenobjekt zu erzeugen, oder?
Die Befehle evalin() und assignin() haben in einem anständigen Code nichts zu suchen und können in 99,99% der Fälle auch (mit Verlaub) "richtig" gelöst werden. Das ist dann aber wiederum ein anderes Thema.
A.wert = 2;
A.test = 'bla2';
bla = 1;
test = 'bla';
Var2Delete = 'A';
workspace_vars = evalin('base','who');
for i=1:size(workspace_vars,1) ifstrcmp(workspace_vars{i}, Var2Delete) clear(workspace_vars{i});
end end
Schon mal im Debugger geschaut, ob er überhaupt if... mal ausgeführt wird?
Gruß Chris
Options and Permissions
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.