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

zuweisen von Variablen und Daten aus einer txt Datei

 

baumi1993

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2018, 11:33     Titel: zuweisen von Variablen und Daten aus einer txt Datei
  Antworten mit Zitat      
Hallo liebe Matlab Gemeinde

Bei meinem Problem mit der TXT. Datei handelt es sich nicht um das Einlesen der Daten, sondern um die Zuweisung der Daten in Matlab als Variablen.
Angabe aus TXT:
Hubert; 29
Elisa; 40

Diese Liste lese ich problemlos in Matlab in eine Liste ein (in einer Spalte untereinander)
Was ich jetzt in Matlab erreichen will ist, dass nach dem Ausführen der Hubert=29 und Elisa = 40, also bestimmte Variablen in Matlab sind. Ich habe hierfür mein Programm im Anhang.

Wäre schön wenn ihr mir da helfen könntet.
Viele Grüße
baumi

Text_einlesen.m
 Beschreibung:

Download
 Dateiname:  Text_einlesen.m
 Dateigröße:  488 Bytes
 Heruntergeladen:  300 mal
Text_einlesen.m
 Beschreibung:

Download
 Dateiname:  Text_einlesen.m
 Dateigröße:  488 Bytes
 Heruntergeladen:  294 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2018, 12:08     Titel:
  Antworten mit Zitat      
Hallo,

das ist zwar mit eval möglich, macht aber das weitere Verarbeiten der Daten schwierig.

Ich könnte mir das als Table vorstellen:
Code:
T = readtable('data.txt', 'Delimiter', ';', 'ReadRowNames', true);

Dann geht z.B.
Code:
T{'Hubert', :}


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2018, 12:45     Titel:
  Antworten mit Zitat      
Hallo Harald

vielen Dank schon einmal für deine Antwort.
Wenn ich das ganze als Table aber kreiere müsste ich aber immer wissen wo in meiner Tabelle T genau die Variable definiert ist (Hubert=29), die ich für die Weiterverwendung benutzen will. Daher wollte ich ehr mit eval arbeiten, damit ich quasi immer über den Workspace bequem auf die Variable zugreifen kann via Variablenaufruf.

Gruß
baumi
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2018, 18:50     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
müsste ich aber immer wissen wo in meiner Tabelle T genau die Variable definiert ist

Nein, musst du nicht. Wenn du das wie von mir vorgeschlagen machst, findet MATLAB die richtige Zeile automatisch.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2018, 22:37     Titel:
  Antworten mit Zitat      
Hallo Harald

da hast du Recht, ich hatte das nicht mehr gewusst... Rolling Eyes Vielen Dank.
Nun habe ich ja die Variablen mit Zuordnung als Matrix im Workspace. Kann ich diese dann via for-Schleife auch in ein String speichern, wo sich die Schleife automatisch durch die ganze Matrix durcharbeitet?

for i=1:length(T)

set.#Name der Variable#= T{'Name der Variable',:};


Gruß
baumi
 
baumi1993

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2018, 22:42     Titel:
  Antworten mit Zitat      
struct meinte ich
 
baumi1993

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2018, 23:16     Titel:
  Antworten mit Zitat      
filename= fullfile('Datenmatrix.txt');
T= readtable(filename,'Delimiter','=','ReadVariableNames',false);

set=table2struct(T,'ToScalar',true);

Wenn ich es über die table2struct Funktion versuche, kommt er mit den Var1 und Var2 durcheinander.. Dann setzt er 'set.Var1' und nicht 'set.Hubert' gleich 29.

Gruß
baumi
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.01.2018, 23:28     Titel:
  Antworten mit Zitat      
Hallo,

so sollte es gehen:
Code:

names = T.Properties.RowNames;
for i=1:height(T)
data.(names{i})= T{names{i},:};
end


set würde ich als Variablenname vermeiden, da das auch ein Funktionsname ist.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2018, 00:17     Titel:
  Antworten mit Zitat      
tip top Harald, vielen vielen Dank Very Happy

Gruß
baumi
 
baumi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2018, 21:21     Titel:
  Antworten mit Zitat      
Hallo Harald

leider muss ich dir nochmal eine Frage stellen..

Wir hatten ja eigentlich das Problem mit dem Auslesen der Tabelle geklärt. Ich habe die gleiche Vorgehensweise bei einer zweiten Tabelle angewendet, wo ich lediglich die Namen selbst aus der Tabelle = ihren Werten in einer For-Schleife setze. Ich habe dafür einfach den Zusatz "data." entfernt. Warum aber wird die For-Schleife dann nicht ausgeführt?

Gruß
baumi
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2018, 21:40     Titel:
  Antworten mit Zitat      
Hallo,

das kann ich dir leider auch nicht sagen, ohne den Code und die Datei vor mir zu haben.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2018, 21:56     Titel:
  Antworten mit Zitat      
Selbstverständlich. Ich habe dir im Angang ein PNG hinterlegt.

Vielen Dank...

code.PNG
 Beschreibung:

Download
 Dateiname:  code.PNG
 Dateigröße:  13.94 KB
 Heruntergeladen:  275 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2018, 22:12     Titel:
  Antworten mit Zitat      
Hallo,

die Datei kenne ich nun immer noch nicht.

Was du mit dem Code bezweckst, verstehe ich nicht. Die Art auf einen Table zuzugreifen gibt es einfach nicht.

Bitte Code grundsätzlich als Text, nicht als Bild zur Verfügung stellen. Dann kann man den Code auch testen oder editieren.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2018, 22:21     Titel:
  Antworten mit Zitat      
Entschuldige Embarassed
Hier in der Datenmatrix befinden sich verschiedene structs. Ich möchte, dass im Workspace nach beenden des Scripts diese structs mit ihren Werten auftauchen.

z.B.
wenn ich im Workspace eintippe

>>set.start

% soll erscheinen

set.start=2

Text_einlesen.m
 Beschreibung:

Download
 Dateiname:  Text_einlesen.m
 Dateigröße:  283 Bytes
 Heruntergeladen:  257 mal
Datenmatrix.txt
 Beschreibung:

Download
 Dateiname:  Datenmatrix.txt
 Dateigröße:  58 Bytes
 Heruntergeladen:  396 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2018, 22:40     Titel:
  Antworten mit Zitat      
Hallo,

dann die Datei zeilenweise einlesen und das als Befehl mit eval ausführen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.