goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

Digitale Signalverarbeitung

Studierende:
Praktikant/-in im Bereich Forschung/Entwicklung Adsorptionswärmepumpe Simulation
Kfz-Zulieferindustrie
Behr GmbH & Co. KG - Stuttgart

Entwicklung und Erprobung von Systemen unter Verwendung mechanischer Fremdenergie
Antriebs- und Fahrwerktechnik
ZF Friedrichshafen AG - Friedrichshafen

Praktikanten/Werkstudenten (m/w) für die Analyse und Optimierung der Ansteuerung einer Fehlersimulation
Sicherheitskritische Systeme
Silver Atena Electronic Systems Engineering GmbH - München

Praktikum Automatisierung von Typtests für PV-Wechselrichter
Solartechnik
SMA Solar Technology AG - Niestetal

Praktikum/Abschlussarbeit - Hardware-in-the-Loop-Simulation von elektrischen Antrieben und leistungselektronischen Komponenten
Elektrotechnik/EDV
dSPACE GmbH - Paderborn

weitere Angebote

Partner:




Vermarktungspartner


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: 115
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 16: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, 17: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: 115
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 17: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, 19: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: 115
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2011, 10: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-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 83
Anmeldedatum: 11.05.11
Wohnort: Bodensee
Version: 7.1 ; 2006a
     Beitrag Verfasst am: 30.08.2011, 10: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: 115
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2011, 10: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-Fortgeschrittener
Forum-Fortgeschrittener

Beiträge: 83
Anmeldedatum: 11.05.11
Wohnort: Bodensee
Version: 7.1 ; 2006a
     Beitrag Verfasst am: 31.08.2011, 10: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



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.