Ich habe mehrere .dat-Dateien, aus denen ich jeweils nur bestimmte Spalten benötige. Zum Beispiel Spalte [1 2 27 54]. Über importdata ist das Einlesen der ganzen Datei in eine Matrix kein Problem. Ist es aber möglich lediglich die benötigten Spalten zu extrahieren, ohne den Rest vorher speichern zu müssen?
Da es sich um sehr große Datenmengen handelt, kann ich (Matlab) nämlich nicht alle hochladen und dann sortieren.
Okay, ich möchte das jedoch gerne in einen Code integriert haben und nicht händisch auswählen müssen.
Ich hab folgenden Code, funktioniert auch wunderbar, aber eben nur bis zu einer gewissen Anzahl an Files, da sonst das Laden von fid zum einen sehr lang dauert, zum anderen aber auch zu groß wird.
mit
importdata
geht das halt nun mal nicht.
Zum einen kannst du bei Import Tool auch ein Skript oder eine Funktion generieren, zum anderen habe ich dir ja alternative Befehle genannt. Wenn du eine Sammlung von Dateien hast, bietet sich
datastore
an.
Hast du auch einen Tipp bzgl. der Geschwindigkeit? Also generell beim Einlesen von .dat-Dateien. Wie kann ich das Einlesen beschleunigen (angewendet an meinem oben genannten Beispiel)?
Infos zu den Dateien: 120 000 Zeilen und 240 Spalten und davon hab ich etwa 400 Files. Alles in eine 3D-Matrix funktioniert nicht (oder doch?), daher wähle ich die benötigten Spalten auch vorher aus.
Eventuell hast du bei meinem folgenden Problem einen Ratschlag:
Ich suche aus den 400 Files immer die Maxima und speichere diese dann in 3D-Matrizen, also die dritte Dimension ist die Anzahl der Files. Es bricht immer bei 110 ab mit der Fehlermeldung "Index exceeds Matrix Dimension". Ich versteh nicht, warum, die Matrix selbst ist nur 6x6 groß, also kann es ja eigentlich nicht an der Größe selbst liegen.
Hast Du eine Idee?
Hier noch ein Teil des Codes:
Code:
for i = 1:length(Filenames) for x=1:x_length %(Spaltenanzahl)
fid(:,:,1) = importdata(Filenames{i});
A (:,:,1) = fid(:,num1,1); %num1=Spaltenauswahl, bspw. [1234]
Leider gibt mir Matlab keine Zeilenangabe an und das debugging ist bei so vielen Durchläufen schwierig. Ich sehe aber im Workspace, dass eben nur 110 Files in der dritten Dimension geladen worden sind.
In wieweit ist das problematisch?
Mein Problem ist hierbei, dass ich das nicht zu vermeiden gewusst habe. Ich brauche ja die Zeile bei der das Maximum vorkommt, um es daraufhin speichern zu können. Möchte diese 3D-Form aber, da ich dann besser weiter arbeiten kann. Hm.
Dass es möglicherweise nicht das macht, was du dir erwartest.
Grüße,
Harald
Einstellungen und Berechtigungen
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
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.