WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Objekt mit variablem Namen löschen

 

Lloyd Blankfein
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 15:59     Titel: Objekt mit variablem Namen löschen
  Antworten mit Zitat      
Hallo,

Code:

            global selectedModel;
            workspace_vars = evalin('base','who');
            for i=1:size(workspace_vars,1)
                if strcmp(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?

Vielen Dank für eure Hilfe,
Philipp
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 29.08.2011, 16:08     Titel:
  Antworten mit Zitat      
Du musst bei den Cells auch {} benutzen, nicht ().

Übrigens solltest du dir Gedanken zu der Grundstruktur deines Programms machen, Variablen aus Funktionen zu löschen ist sehr unschön.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 16:27     Titel:
  Antworten mit Zitat      
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?

Gruß,
Philipp
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 29.08.2011, 18:10     Titel:
  Antworten mit Zitat      
Na so:
Code:
workspace_vars{i}


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2011, 09:02     Titel:
  Antworten mit Zitat      
Hallo eupho,

dieser Code läuft zwar ohne Fehlermeldung durch. Gelöscht wird das Objekt allerdings nicht! Woran kann das liegen?

Philipp
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 30.08.2011, 09:26     Titel:
  Antworten mit Zitat      
Hallo Lloyd,

Keine Fehlermeldung? Das ist aber komisch, da du so wie du es machst files mit dem namen der Variablen löschst...

Code:



Gruß Chris

edit war da ;D
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2011, 09:47     Titel:
  Antworten mit Zitat      
Hallo Chris,

sorry ich hatte mich undeutlich ausgedrückt. Den delete Befehl hatte ich inzwischen mit diesem Code ersetzt:

Code:

clear(workspace_vars{i});
 


Das Verhalten bleibt also immer noch: Keine Fehlermeldung, Objekt wird nicht gelöscht.

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 31.08.2011, 09:01     Titel:
  Antworten mit Zitat      
Also bei mir funktioniert es nach dem Beispiel:

Code:
A.wert = 2;
A.test = 'bla2';
bla = 1;
test = 'bla';
Var2Delete = 'A';
workspace_vars = evalin('base','who');
for i=1:size(workspace_vars,1)
    if strcmp(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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.