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

schauen ob Variable definiert

 

Jens2009

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 16:45     Titel: schauen ob Variable definiert
  Antworten mit Zitat      
Hallo,

ich bräuchte einmal eure Hilfe:

ich möchte mit einer IF-Abfrage festellen ob die Variable x definiert ist oder nicht. Falls nicht soll sie mit x=[] definiert werden.
Allerdings kommt bei mir immer "Variable nicht definiert". Ich hab nichts passendes gefunden. Ist das überhaupt möglich?

Eine vorherige Definierung kommt aufgrund der Problemstellung nicht in Frage.

Kann mir jemand weiterhelfen?


ben
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 21.08.08
Wohnort: Stuttgart
Version: R2007a, R2008b
     Beitrag Verfasst am: 23.06.2009, 16:54     Titel:
  Antworten mit Zitat      
Hallo Jens,

der Befehl heißt exist, hier ein Beispiel:

Code:

if exist('x')
else
   x = [];
end
 


Gruß, Ben
Private Nachricht senden Benutzer-Profile anzeigen
 
Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 16:59     Titel:
  Antworten mit Zitat      
Hallo Jens.
Was verstehst du denn unter einer definierten Variable? Also wenn eine Variable im Worksspace steht, dann ist sie definert. Mit den Befehlen
Code:
isempty(x)
exist('x','var')
isnan(x)
 

ob die Variable keinen Eintrag enthält, die Variable wirklich existiert bzw. einen NaN-Eintrag enthält.

Ein If-Schleifen-Beispiel:
Code:


x=6;%Definition der Variablen x
y='Hallo';
z=[2 3 4 5];

if exist('x','var')==0
x=[];
end



 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jens2009

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 17:09     Titel:
  Antworten mit Zitat      
DANKE für eure Hilfe.

Wieso funktioniert die erste Antwort nicht in einer funktion und die zweite schon?
 
Jens 2009

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 17:13     Titel:
  Antworten mit Zitat      
Ich muss das korrigieren beim 2. klappts leider auch nicht so recht:

Fehler beim 1.: Variable fehlt

Fehler beim 2.: Variable nie definiert


Wie gesagt, das ganze soll in einer Funktion aufgerufen werden. Ohne gehts beides....
 
ben
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 21.08.08
Wohnort: Stuttgart
Version: R2007a, R2008b
     Beitrag Verfasst am: 23.06.2009, 17:18     Titel:
  Antworten mit Zitat      
In welchem Workspace soll die Variable denn liegen? Oder anders gefragt: Hast Du die Variable außerhalb der Funktion berechnet, oder wird die in der gleichen Funktion berechnet?

Wenn Du die außerhalb berechnet, dann musst Du die mit evalin übergeben.

Kenne gerade den Code nicht auswendig, die Hilfe ist da aber gut, bzw. gibt es hier im Forum sehr gute Bsp. dazu.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jens2009

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 17:20     Titel:
  Antworten mit Zitat      
Variable soll der Funktion übergeben werden oder eben nicht. Wenn sie nicht übergeben wurde muss sie als leer (x=[])definiert werden um keinen Programmabbruch zu bekommen.
 
ben
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 21.08.08
Wohnort: Stuttgart
Version: R2007a, R2008b
     Beitrag Verfasst am: 23.06.2009, 17:24     Titel:
  Antworten mit Zitat      
Schau mal, ob dich das weiter bringt:

Link
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 23.06.2009, 17:44     Titel:
  Antworten mit Zitat      
Vielleicht reicht ganz simpel die Rückgabe des WHOS Befehls?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jens2009

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2009, 17:47     Titel:
  Antworten mit Zitat      
Ist so ein kleiner teufelskreis.

Da das Evalin auch nur funktioniert wenn die Variable im Workspace definiert ist. Ist sie das nicht

Immerhin hab ich es jetzt verstanden wie es funktioniert mit den Variablen und Funktionen.



Allerdings bleibt das Problem.


so geht es irgendwie auch nicht. Da existiert es dann nie

Code:
if exist('evalin(''base'',''m'')','var')
 
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 25.06.2009, 14:35     Titel:
  Antworten mit Zitat      
Ich glaube das hat noch mit Cojas Frage zu tun was denn eine definierte Variable ist. Es ist ja eine Eigenschaft von MATLAB, dass es keine Definition braucht - man definiert sie erst durch die Zuweisung eines Wertes.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sylverblueice

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2009, 12:44     Titel:
  Antworten mit Zitat      
Mahlzeit zusammen,

Falls das Problem vorligen sollte, dass man die Existenz einer Variablen in 'base' in einer Funktion feststellen will, ein kleiner Tipp:

Nutzt die try-Funktion.

Ist zwar etwas zweckentfremdet, aber geht:

Code:

try
    In=evalin('base','Name');
    %Code falls "Name" besteht...
catch
end;
 


Man kann sich auch einen Indikator in Bool einbauen:
Code:

check=0;
try
    In=evalin('base','Name');
    check=1;
catch
end;
if check==1
    %Code falls "Name" besteht...
end;
 


Die Varbieble hat hier im Funktionen-Workspace den Namen "In".

LG Sylver
 
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.