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-import - variable spaltenzahl

 

JamesH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2010, 19:11     Titel: txt-import - variable spaltenzahl
  Antworten mit Zitat      
Hallo,
ich bin matlab-anfänger und komm grad net so recht weiter. mein problem:
ich hab ein txt-file mit 6 headerlines, dann kommen n Zeilen mit Messaten:
erste Spalte datum im Format dd.mm.jj,
zweite Spalte Zeit im Format HH:MM:SS,
dann 26 Spalten, in denen die Werte, die ich haben möchte, stehen. Allerdings sind nicht in jeder Zeile auch 26 Werte, je höher die Spaltenzahl wird, desto geringer ist die Wahrscheinlichkeit, dass ein Wert vorkommt.

jedenfalls sind in der ersten zeile nur die ersten 14 spalten mit messwerten, ab der 18 zeile sinds mehr werte. dennoch macht mir der import-wizzard nur eine Matrix mit 17x14 und nicht nx26.

dort, wo kein wert ist, sollte NaN stehen (im orginal is das leer)

ich hoffe, dass mir jemand helfen kann?!

vielen dank!


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 05.02.2010, 11:45     Titel:
  Antworten mit Zitat      
Hi,

Du musst die Datei mit fopen öffnen und am besten in einer while-Schleife mit fgetl Zeile für Zeile lesen. Dabei erhältst Du jeweils einen String.

Mit str2num wandelst Du den String in einen Vektor um.

Ausserhalb der While-Schleife stellst Du ein leeres Array bereit, welches nun in jeder Zeile aktualisiert wird.

Code:

A=[];
% while mit Abbruchbedingung
   a='123.23 ; 345.23; -101.1';   % Ergebnis von fgetl
   avektor=str2num(a).';            % Wandlung des Zeilenstrings in Vektor
   LA=length(avektor);               % Länge des Vektor (Anzahl  Zahlen)
   SA=size(A,2);                        % Aktuelle Spaltenanzahl der Matrix A

   if isempty(A),                        % Beim ersten Aufruf ist A Leermatrix
      A=[A;avektor];
   else                                      % Im Folgenden ist A nicht mehr leer
      if LA<SA,                            % Vektor enthält weniger Elemente wie Spaltenanzahl
         avektor=[avektor,NaN .*ones(1,SA-LA)];
      end
      if LA>SA,                          % Vektorlänge größer als bisherige Spaltenanzahl der Matrix A
         A=[A,NaN .*ones(size(A,1),SA-LA)];
      end
      A=[A;avektor];
   end

% End of while

 


Bei diesem Beispiel werden fehlende Elemente durch NaN's (Not a number) repräsentiert. Man könnte auch Nullen eintragen, allerdings weiss man später evtl. nicht mehr, ob die Null eine Leerstelle oder wirkliche Zahl darstellt.

Hilft das weiter ?
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 05.02.2010, 17:13     Titel:
  Antworten mit Zitat      
Vielleicht hilft dir der fertige Code 'txt2mat' weiter, damit kannst du ganz einfach eine Textdatei in den Workspace einlesen. Geht sehr schnell.

http://www.mathworks.com/matlabcentral/fileexchange/18430-txt2mat
Private Nachricht senden Benutzer-Profile anzeigen
 
JamesH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 13:04     Titel: Danke!
  Antworten mit Zitat      
Vielen Dank für die Hilfe!
ich hatte mir allerdings schon damit beholfen, die TXT-files in Excel zu importieren, weil ich da dann auch eine schöne Ordnung mit Tabelenblättern und so hinbekommen habe und das so für mich einfacher war.
trotzdem vielen Dank für die Antworten, evtl. komme ich darauf zurück, wenn sich bei den Excel-Sachen noch Probleme ergeben.
grüße
 
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.