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

Variablenname einlesen

 

smaica
Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 13:55     Titel: Variablenname einlesen
  Antworten mit Zitat      
Hallo,

Ich will einen Vektor erstellen, der aus einer Matrixspalte eingelesen wird (zeile 2 bis ende) und dessen Name so leutet wie der Text in dem ersten Feld der Matrixspalte.
Wie mache ich das mit der Benennung?

Lieben Dank schonmal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.10.2012, 14:27     Titel:
  Antworten mit Zitat      
Hallo,

es ginge mit EVAL oder ASSIGNIN, ist aber keine gute Idee, wie du nachlesen kannst, wenn du hier nach einem dieser Befehle suchst.
Stattdessen würde ich eine Struktur anlegen:

Code:
data.(header1) = value1;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
smaica
Themenstarter

Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2012, 15:38     Titel:
  Antworten mit Zitat      
Hallo Harald,


vielen Dank schonmal, leider weiß ich nicht genau wie ich deinen Tipp umsetze.

Ich habe eine Matrix "raw", lese eine Spalte daten aus von 2 bis Ende

Code:
Daten= raw(2:zeilen,5)


in Zeile 1 Steht der Variablenname.

Wie genau nutze ich nun die Strukturvariable hier?


LG
smaica
Private Nachricht senden Benutzer-Profile anzeigen
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2012, 08:24     Titel:
  Antworten mit Zitat      
Willst du nur eine matrix einlesen oder mehrere hintereinander? Vielleicht bietet sich das folgende an.

data.header = raw(1,5);
data.value = raw(2:zeilen,5);

Wenn du den Name willst dann mit 'data.header' holen und deine Matrix Daten entsprechend mit 'data.value'. Und alle ist dann unter 'data' gespeichert. Soweit ich weiß kann man bei einem Vektor keine unterschiedlichen Datentypen mischen (z.B. String und Integer), sollten alle der gleiche Typ sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2012, 10:14     Titel:
  Antworten mit Zitat      
Hallo,

worauf ich hinaus wollte, war etwas der Art:
Code:
data.(raw{1,5}) = raw(2:zeilen, 5)

Je nach Datentyp von raw kann es sein, dass du andere Klammern verwenden musst.

Die Variante von knimulis_baltaM ist auch gut, es ist lediglich eine Geschmackssache, was man macht.

Falls du xlsread verwendest, würde ich überlegen, die ersten beiden Rückgabeargumente zu verwenden, da dort die numerischen und die nicht-numerischen Daten gleich schön getrennt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
smaica
Themenstarter

Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2012, 14:35     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die Hilfen, ich habe jetzt verstanden was ihr meint.
Leider habe ich jetzt 2 Probleme:

1. ein paar meiner Überschriften haben eine Leerzeile drinne oder beginnen mit Zahlen, das kann ich mit

Code:
data.(raw{1,5}) = raw(2:zeilen, 5)


leider nicht einlesen, weiß jemand was ich dazu ändern muss?

2.Ich will weitere Variablen benennen mit dem Namen, den ich eingelesen habe und einem Zusatz, wenn ich einfach:

Code:
data.(raw{1,5})_Zusatz = ...

schreibe funktioniert das nicht und wenn ich zuvor meine Überschriften einzeln einlese und dies verwenden will z.B. mit:

Code:
datas.header1=(raw{1,4})
datas.header1_Zusatz = ...


heißt meine Variable header1_Zusatz, nciht etwa "Name1_Zusatz" mit dem eingelesenen Namen. Kann man das irgendwie hinbekommen?

Vielen Dank
smaica
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2012, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

zu 1.:
Feldnamen einer Struktur müssen gültige Variablennamen sein.
Man könnte z.B. über reguläre Ausdrücke alle Ziffern und Leerzeichen durch nichts ersetzen:
Code:

oder aus den Überschriften gültige Variablennamen generieren.
Code:


zu 2.:
die korrekte Syntax dazu ist:
Code:
data.([raw{1,5} '_Zusatz']) = ...

zunächst wird der Feldname mit [] konstruiert, dann sorgen die () dafür, dass das in der richtigen Reihenfolge ausgewertet wird.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
smaica
Themenstarter

Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2012, 14:26     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank, ich konnte jetzt alle Daten und Variablen erstellen. Super!

Viele Grüße
smaica
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.