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

Variablenzugriff

 

demolic

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 17:49     Titel: Variablenzugriff
  Antworten mit Zitat      
Hi Leute,
ich bräuchte mal eure Hilfe. Ich habe 2 Probleme in Matlab.

1.)
ich habe einen Datensatz aus einem Programm in ein *.m File exportiert. Darin sind diverse Variablen gespeichert, mal Vektoren, mal Matrizen usw.
Gibt es einen Befehl, mit dem ich all diese Variablen der Reihe nach abrufen kann?

Konkret geht es darum, das ich überprüfen will, ob in den Variablen ein Wert ist, oder nicht. Das nötige Programm dazu hab ich schon geschrieben, allerdings hab ich keine Lust das Programm für 200 Variablen von Hand zu starten...

2.) ich hab eine Funktion geschrieben die 2 Eingabeparameter hat, z.B. Geschwindigkeit und Abstand.
Der Aufruf erfolgt dann mit funktion(geschwindigkeit, abstand), wobei für Geschwindigkeit z.B. objekt3_v und für abstand objekt3_d eingesetzt wird.
GIbt es einen Befehl in Matlab, der mir später genau diese 2 eingesetzten "Worte" auslesen kann.
Also wenn ich die Funktion Aufrufe, soll sie am Ende eine printf Ausgabe ausspucken in der steht "für objekt3_v und objekt3_d passt es nicht"

Ich hoffe das war irgendwie verständlich.

DAnke auch Leute!
Michi


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 18:00     Titel:
  Antworten mit Zitat      
1) mit who kannst du die Namen der variablen ermitteln und mit eval(isempty(variable)) überprüfen ob die Variable leer ist.

2) versteh ich noch nicht richtig. Sind Geschwindigkeit und Abstand Zahlen oder Strings?

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
demolic

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 18:10     Titel:
  Antworten mit Zitat      
Danke für die Tipps Thomas,

aber nochmal zu 1)
kann ich das auch irgendwie so Aufrufen, das er alles automatisch durchläuft?
also das who die Namen rauszieht und aufruft?

2) Geschwindigkeit und Abstand sind Vektoren
mir geht es allerdings nur um den Namen.
Da das Programm für mehrere Geschwindigkeiten und mehrere Abstände ausgeführt werden soll, hätt ich gerne eine printf Zeile die mir am Ende neben Ergebnis auch die Aufrufparameter anzeigt. Aber nicht die eigentlichen Werte, sondern nur den Namen

vG
Michi
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.11.2010, 19:26     Titel: Re: Variablenzugriff
  Antworten mit Zitat      
Hallo demolic,

es ist ungewöhnlich einen Datensatz in ein M-File zu schreiben. Üblicherweise nutzt man dafür MAT-Files. Wie stehen die Daten denn im M-File?

Zitat:
Gibt es einen Befehl, mit dem ich all diese Variablen der Reihe nach abrufen kann?

Welcher Reihe nach? In der Reihenfolge, in der sie im File stehen?
Du könntest sie einfach als Cell definieren, dann ist erstens eine Reihenfolge überhaupt definiert und zweitens das Auslesen dieser Reihenfolge trivial.

Es scheint, als habest Du zum Speichern der Daten ein sehr umständliches Format gewählt. Alle Daten in ein CELL-Array zu schreiben, dass als MAT-File gespeichert wird, würde das Testen auf leere Elemente sehr einfach machen.

Zum Problem 2: Siehe INPUTNAME.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2010, 07:35     Titel:
  Antworten mit Zitat      
Code:

d = 3;
j = [];

w = who;

for k = 1:length(w)
m = eval(['isempty(' w{k} ');']);
if m == 0
display([w{k} 'is empty']);
end
end
 


Ich hatte es eigentlich so verstanden das ein mat file mit verschiedenen Vektoren, etc geladen wird, die dann überprüft werden sollen.
Private Nachricht senden Benutzer-Profile anzeigen
 
demolic

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2010, 16:53     Titel:
  Antworten mit Zitat      
Danke Thomas,

genau so etwas habe ich gemeint!

Und Sorry Leute, habe mich vertan, meinte natürlich die Daten werden in ein .mat File exportiert nicht .m

1 Frage hätte ich noch.
Wie kann ich denn eine Variable mit einem Bereich überprüfen?

Ich hab eine konstante z.B. c und würde gerne wissen ob sie in dem Bereich von [-10,100] liegt. Konstante und Bereich sind allerdings jeweils nur ganze Werte.

Danke!
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2010, 17:13     Titel:
  Antworten mit Zitat      
such mal unter dem Stichwort: Logical Indexing. Ich denke da findet sich was passendes.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.11.2010, 01:37     Titel: Re: Variablenzugriff
  Antworten mit Zitat      
Hallo demolic,

Aha, ein MAT File. Das ist schon etwas ganz anderes.

Zitat:
Gibt es einen Befehl, mit dem ich all diese Variablen der Reihe nach abrufen kann?

Z.B.:
Code:

Data = load('FileName.mat');
DataName = fieldnames(Data);
DataValue = struct2cell(Data);
emptyValue = cellfun('isempty', DataValue);
fprintf('Empty variables:\n');
fprintf('  %s\n', DataName{emptyValue});

for iName = 1:numel(DataName)
   aValue = DataValue{iName};
   ... What ever you would do...
end
 


Zitat:
Ich hab eine konstante z.B. c und würde gerne wissen ob sie in dem Bereich von [-10,100] liegt.

Code:
inside = and(c >= -10, c <= 100);


Gruß, Jan
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 - 2025 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.