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

Datenimport verschnellern?

 

Zoe401
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 09:39     Titel: Datenimport verschnellern?
  Antworten mit Zitat      
Hallo,

ich möchte meine "import"-Funktion etwas schneller machen.
Wenn ich große Datensätze(122 Dateien mit einer 51200 x 18 Tabelle) reinlade braucht es 15min (7sek pro Datei). Das ist schon etwas arg lange.

Ich habe was gelesen mit "zeros", das man vorher die Matrix vorgibt. Bringt das was, wenn ja wie funktioniert das.
Und wenn nein, gibt es dann andere Möglichkeiten?

Liebe Grüße,
Zoe
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: 15.10.2015, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

bitte konkretisiere deine Fragen so sehr wie möglich.
In welchem Dateiformat liegen die Daten vor, und wie liest du sie momentan ein?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 10:24     Titel:
  Antworten mit Zitat      
Code:
csvfiles = dir('*.csv'); % Finde alle csv Dateien aus dem geöffneten Ordner
num_files = length(csvfiles); % Anzahl der csv Dateien
for i = 1:num_files; % für i = 1 bis num_files
    n{i} = importtable_test(csvfiles(i).name, 3, inf); % Importiere alle csv Dateien in ein Array
end
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: 15.10.2015, 10:33     Titel:
  Antworten mit Zitat      
Hallo,

die entscheidende Frage ist dann, was in deiner importtable_test steht.
Wie sind deine Daten aufgebaut?

Selbst wenn du nur numerische Daten hast, komme ich grob überschlagen auf ein knappes GB an Daten. Da würde ich dann auch nicht erwarten, dass das innerhalb von Sekunden importiert ist. Es kann aber gut möglich sein, das deutlich zu reduzieren.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 10:40     Titel:
  Antworten mit Zitat      
Code:
function  H13188n932a30Config01 = importtable_test(filename, startRow, endRow)
%IMPORTFILE Import numeric data from a text file as a matrix.
%   H13188N932A30CONFIG01 = IMPORTABLE_TEST(FILENAME) Reads data from text file
%   FILENAME for the default selection.
%
%   H13188N932A30CONFIG01 = IMPORTFILE(FILENAME, STARTROW, ENDROW) Reads
%   data from rows STARTROW through ENDROW of text file FILENAME.
%
% Example:
%   H13188n932a30Config01 = importtable_test('123456_H131-88_n932_a30_Config01.csv', 3, 51202);
%
%    See also TEXTSCAN.

% Auto-generated by MATLAB on 2015/10/12 09:20:44

%% Initialize variables.
delimiter = ',';
if nargin<=2
    startRow = 3;
    endRow = inf;
end

%% Format string for each line of text:
%   column1: double (%f)
%   column2: double (%f)
%   column3: double (%f)
%   column4: double (%f)
%   column5: double (%f)
%   column6: double (%f)
%   column7: double (%f)
%   column8: double (%f)
%   column9: double (%f)
%   column10: double (%f)
%   column11: double (%f)
%   column12: double (%f)
%   column13: double (%f)
%   column14: double (%f)
%   column15: double (%f)
%   column16: double (%f)
%   column17: double (%f)
%   column18: double (%f)
% For more information, see the TEXTSCAN documentation.
formatSpec = '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%[^\n\r]';

%% Open the text file.
fileID = fopen(filename,'r');

%% Read columns of data according to format string.
% This call is based on the structure of the file used to generate this
% code. If an error occurs for a different file, try regenerating the code
% from the Import Tool.
dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines', startRow(1)-1, 'ReturnOnError', false);
for block=2:length(startRow)
    frewind(fileID);
    dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines', startRow(block)-1, 'ReturnOnError', false);
    for col=1:length(dataArray)
        dataArray{col} = [dataArray{col};dataArrayBlock{col}];
    end
end

%% Close the text file.
fclose(fileID);

%% Post processing for unimportable data.
% No unimportable data rules were applied during the import, so no post
% processing code is included. To generate code which works for
% unimportable data, select unimportable cells in a file and regenerate the
% script.

%% Create output variable
H13188n932a30Config01 = table(dataArray{1:end-1}, 'VariableNames', {'B1','B2','B3','B4','B5','B6','B7','B9','B10','B11','B12','B19','B15','B17','B18','B20','Trigger','Drehzahl'});


Ja mir ist schon klar, das das lange dauert. Ich habe nur gehofft das es eine Möglichkeit gibt das ein wenig zu reduzieren!
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: 15.10.2015, 10:54     Titel:
  Antworten mit Zitat      
Hallo,

kannst du eine Beispieldatei zur Verfügung stellen?

Was natürlich auch ungemein helfen kann, ist eine schnellere Festplatte (SSD) :)

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 11:20     Titel:
  Antworten mit Zitat      
So sieht eine Datei aus und wenn man davon über 100 in einem Ordner hat dauert das um die 10-15 min

Ja ne SSD wäre toll Smile
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: 15.10.2015, 12:37     Titel:
  Antworten mit Zitat      
Hallo,

falls da ein Anhang ist, habe ich Tomaten auf den Augen...

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 12:52     Titel:
  Antworten mit Zitat      
Die Datei wurde nicht angefügt weil csv dateien verboten sind. Hab ich nicht bemerkt sorry.
Hier mal als xls datei. Muss man ahlt in csv wieder umwandeln.

Beispiel.xls
 Beschreibung:

Download
 Dateiname:  Beispiel.xls
 Dateigröße:  6.34 MB
 Heruntergeladen:  479 mal
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: 15.10.2015, 13:45     Titel:
  Antworten mit Zitat      
Hallo,

die Daten sind schon lokal auf der Festplatte gespeichert und werden nicht etwa von einem Netzlaufwerk gezogen?

Ich sehe keine großen Optimierungsmöglichkeiten.
Das mag dir zwar wenig helfen, aber einfach zum Vergleich:
Bei mir wird diese Datei in ~0,2 s importiert...

Solltest du öfter dieselben Dateien brauchen, lohnt sich eventuell das Speichern als .mat. Dann dauert es bei mir für diese eine Datei nur ~0,02 s.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 14:22     Titel:
  Antworten mit Zitat      
Oh man, es lag definitiv daran das ich die Daten auf einem Netzlaufwerk hatte!

Jetzt dauert es pro Datei nur noch eine halbe Sekunde Very Happy

Danke an so eine einfache Lösung hab ich nich gedacht!
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.