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

txt file zeilenweise auslesen

 

joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 16.04.2008, 22:11     Titel: txt file zeilenweise auslesen
  Antworten mit Zitat      
Hallo,

es gelingt mir nicht ein txt file zeilenweise auszulesen. Zum lesen benutze ich funktion readtext().

Hat jemand eine Idee?

Danke Joe
Private Nachricht senden Benutzer-Profile anzeigen


joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 17.04.2008, 09:22     Titel:
  Antworten mit Zitat      
Hallo,

und jetzt ein bisschen konkreter. Ich lese eine Textdatei zeilenweise aus. Dann mache ich auswertung des ersten Wertes in der ausgelesener Zeile. Ist dieser 1 (Aktiv) wird ein Objekt erstellt.

Hier ist Beispiel Textdatei:

1, ES,FUT,USD,GLOBEX, ,200806, ,0.0, ,0,0.0
0, DAX,FUT,EUR,GLOBEX, ,200806, ,0.0, ,0,0.0
1, GOOG,STK,USD,SMART, , , ,0.0, ,0,0.0


Mein Code:

Code:
function data = loadContracts(contractFile)

for i=1:3 % iterationen durch jede Zeile
    [tempData{1:12}] = textread(contractFile, ...
        '%f %s %s %s %s %s %s %s %s %s %s %s',i, 'delimiter', ',','emptyvalue',NaN);
    if tempData{1}(1)==1 % wenn 1 in erster celle
        % data = cContract(tempData); % erstelle Objekt
        tempData{1,:} % daten ausgeben
        data = tempData;
    else
    tempdata =[]; % sonnst lösche das cellarray
    end
end


Meine Fragen:

1. Wie kann ich das Ende des Textfiles automatisch signalisieren?
Damit die for schleife bei der letzter Zeile automatisch beendet ist?
2. Es gelingt mir nich nur die Zeilen mit "1" am anfang in das cellarray hinzufügen
3. Könnte man die den Code noch eleganter gestalten?
4. Die ausgelesenen Daten speichere ich temporär in einer cellarray. Gibt es eine andere Möglichkeit sie zu speichern (vielleicht was effektiveres), so damit ich per Index auf die daten zugreifen kann?

Danke für die Hinweise.

Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.04.2008, 10:21     Titel:
  Antworten mit Zitat      
Moin Joe,

folgender Code funktioniert bei mir wunderbar:
Code:

function data = loadContracts(contractFile)
    [tempData{1:12}] = textread(contractFile, ...
                '%f %s %s %s %s %s %s %s %s %s %s %s',...
                'delimiter', ',','emptyvalue',NaN);
    idx = find(tempData{1}(:)==0);
    for i=1:12
        tempData{:,i}(idx) = [];
    end

Zu den Fragen:
1. Ist gelöst, da keine for-Schleife verwendet wird!
2. Ebenfalls gelöst. (Habs mit deinem Bsp. txt.-file probiert)
3. Ich denke etwas eleganter ist er schon geworden, allerdings stört mich noch die kleine for-Schleife - Vllt. hat ja noch jmd. eine Idee, ob und wie man die weg bekommt!?
4. Die einzige andere Möglichkeit, die mir einfällt, wäre alle Spalten in einem separaten Vektor zu speichern
Code:
[vek1 vek2 vek3 ...] = textread(...);
Allerdings glaube ich nicht, dass das eine elegantere Möglichkeit ist?!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 17.04.2008, 10:55     Titel:
  Antworten mit Zitat      
Hallo Alex,

danke für den Code. Den "Find" Befehl habe ich bisher nicht gekannt.

Ich habe noch eine Frage: Kann man jetzt Zeilenweise auf das entstandene tempData zugreifen? Weil mit tempData{1:end}(1) funktioniert es nicht. Ich will alle zellen ansteuern aber inhalt nur der erster Zeile.

LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.04.2008, 11:00     Titel:
  Antworten mit Zitat      
Genau das habe ich eben auch nicht hinbekommen. Nur mit der for-Schleife funktioniert das Sad
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 17.04.2008, 11:59     Titel:
  Antworten mit Zitat      
Hallo Alex,

ok, verstehe. Noch eine Frage bezüglich Objekt generierung. Und zwar:

nehmen wir an, dass das die Definition für ein Objekt ist:

ES,FUT,USD,GLOBEX, ,200806, ,0.0, ,0,0.0

ich generiere ein Objekt der Klasse Contract durch aufruf von:

Code:
objContr = cContract(inData);


Meine Frage: wo, und wie muss ich mein Code umändern wenn ich will, dass der Objekt nicht in Var "objContr" sondern in einer dynamisch erstellter Var (zB. erster Wert der inData "ES") gespeichert ist. Somit wird das Objekt von typ Contract erstellt und in einer war ES abgespeichert.

Danke im Voraus.

LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.04.2008, 13:00     Titel:
  Antworten mit Zitat      
Dazu gibts hier auch schon eine Menge Beiträge.
Musst mal nach dynamischen Variablennamen oder eval suchen...
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 17.04.2008, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

danke für den Hinweiss. Habe es gefunden und das Problem gelösst. Very Happy

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