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

Textscan R2012a mehr als doppelt so schnell wie R2013b

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2014, 17:31     Titel: Textscan R2012a mehr als doppelt so schnell wie R2013b
  Antworten mit Zitat      
Hi,

ich habe einen Laptop (4 GB RAM) sowie einen deutlich leistungsstärkeren PC (16 GB RAM, i5, ...).

Ich hatte zunächst auf meinem Laptop nur R2012a und auf dem PC bereits R2013b installiert. Bei der Anwendung von Textscan fiel mir auf, dass das Einlesen der 1,9 GB Daten beim Laptop deutlich schneller beendet ist.

Ich hab nun die Zeiten verglichen:
Laptop:
R2012a: 37 bis 45 s
R2013b: 121 s

PC:
R2013b: 97 s


Wieso ist der Befehl mittlerweile so abnormal langsam geworden?

Über eine Antwort würde ich mich sehr freuen. Smile


Harald
Forum-Meister

Forum-Meister


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

kannst du ein Beispiel zur Verfügung stellen, anhanddessen sich das reproduzieren lässt?

So eine Frage ist auch wie gemacht für den Technischen Support von MathWorks. Sollte es sich um ein Problem im Produkt handeln, kann dem so nachgegangen bzw. das Problem behoben werden.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2014, 19:01     Titel:
  Antworten mit Zitat      
Hi,

ja, ein Beispiel kann ich zur Verfügung stellen. Das Messwertfile hab ich mit 7-Zip komprimiert, da es sonst sehr groß wäre.

Download über:
http://lix.in/-e324e6 (Download eines 7-Zip Files von meinem persönlichen Webspace). 7-Zip Files sind hier wohl nicht zugelassen. Ist 48 MB groß (entpackt über 1 GB).

Der Code zum Einlesen der Messdaten:
Code:
% Ausgangszustand herstellen
clear all; clc;


% Datei auswählen und öffnen
[a, b]=uigetfile({'*.KEW','All KEW files'; ...
       '*.*','All Files' },'Please select KEW file');   if a == 0; return; end
tic;    fid=fopen([b,a],'r');                                              %fid=fopen('52-SD024.KEW','r');


% Beschriftung einlesen und erstellen
fmat=['%s %*s %*s ',repmat('%s ', 1, 24),'%*[^\n]'];
caption=textscan(fid,fmat,1,'delimiter',',','Headerlines',17);      % Alternativ: a=textscan(fid,'%s',24,'delimiter',',','Headerlines',17); (erg dann aber durch Kommas als ein String)
caption=[caption{:}];   caption{1}='TIMESTAMP';                     % Alternativ: horzcat(caption{:}); (macht aus einzelnen cell arrays einen)


% Messwerte einlesen
fmat2=['%s %s %*s ',repmat('%f ', 1, 24),'%*[^\n]'];                            % Format für textscan
% frewind(fid);   temp=textscan(fid,fmat2,'delimiter',',','Headerlines',1Cool;      % Alternatives Vorgehen
temp=textscan(fid,fmat2,'delimiter',',');                                       % Einlesen (nimmt 95 % der Zeit in Anspruch)
fclose(fid);                                                                    % File schließen
 


Die Zeile die so extrem unterschiedlich lange benötigt ist die Zeile mit "textscan".

Viele Grüße.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2014, 21:12     Titel:
  Antworten mit Zitat      
Ziemlich beschissen das Ganze. Der Support hat es bestätigt:

"I am not sure whether you are aware of this but in MATLAB R2012b we added the support for multiple delimiters and in MATLAB R2013a we added support for non-ASCII text files for "textscan". This added functionality has probably cause the slow down of textscan (which I could reproduce on my machine)."

Bedeutet - je nach Anwendung - benötigt dasselbe Skript nun doppelt solange ... keine Ahnung wie ich die Daten dann einlesen soll.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2014, 22:17     Titel: Aufbau format für fscanf
  Antworten mit Zitat      
Hi,

einmal angenommen ich habe folgenden String:
Code:
2013/12/30,13:10:32,00000:00:02,2.314E+02,2.324E+02,2.323E+02,3.683E+01,2.725E+01,2.328E+01,+1.713E+04,+7.477E+03,+5.470E+03,+4.179E+03,+0.845,+0.878,+0.864,+0.773,+2.026E+04,+8.520E+03,+6.334E+03,+5.408E+03,+1.071E+04,+4.085E+03,+3.193E+03,+3.433E+03,50.0,1.491E+01,----     ,----     ,----     ,----     ,----     ,----     ,----      ,----      ,----      ,----      ,----  ,----  ,----  ,----  ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----,----     ,----     ,----     ,----     ,----     ,----     ,----     ,----      ,----      ,----      ,----      ,----  ,----  ,----  ,----  ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----,----     ,----     ,----     ,----     ,----     ,----     ,----     ,----      ,----      ,----      ,----      ,----  ,----  ,----  ,----  ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----      ,----,----     ,+9.51420E+00,+4.20430E+00,+2.99070E+00,+2.31890E+00,+0.00000E+00,+0.00000E+00,+0.00000E+00,+0.00000E+00,+9.51420E+00,+4.20430E+00,+2.99070E+00,+2.31890E+00,+1.12668E+01,+4.78320E+00,+3.48700E+00,+2.99650E+00,+0.00000E+00,+0.00000E+00,+0.00000E+00,+0.00000E+00,+1.12668E+01,+4.78320E+00,+3.48700E+00,+2.99650E+00,+6.03000E-02,+1.903E+01,+8.409E+00,+5.981E+00,+4.638E+00,+1.000E+05,


Kann mir jemand sagen wie ich wegen den Kommas "format" für fscanf aufbauen muss?

Zum Aufbau;
Zwei Strings, ein String den ich nicht benötige, 24 Zahlen die ich benötige, den Rest den ich nicht benötige, das letzte Komma

So:
Code:
fmat2=['%s %s %*s ',repmat('%f ', 1, 24),'%*[^\n]'];
% oder
fmat2=['%s, %s, %*s, ',repmat('%f, ', 1, 24),'%*[^\n]'];


hat es leider nicht funktioniert.

' Würde mich sehr über Input freuen. Smile
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 23.01.2014, 11:59     Titel:
  Antworten mit Zitat      
Sieht für mich nach comma-separated values File aus. Also csvread.
Da kriegst du nur Probleme wenn du die Strings einliest.

Code:

>> system('cat c')
2014/09/01,13:10:05,00000:00:02,1,3,5
2014/09/01,13:10:10,00000:00:03,3,5,7

ans =

     0

>> n=csvread('c',0,3) # überspringt 0 Zeilen und 3 Spalten

n =

     1     3     5
     3     5     7

>> fid=fopen('c')

fid =

     7

>> str=fread(fid,'char=>char').'

str =

2014/09/01,13:10:05,00000:00:02,1,3,5
2014/09/01,13:10:10,00000:00:03,3,5,7


>> a=regexp(str,'\d+/\d+/\d+,\d+:\d+:\d+,(.*?),','tokens')


a =

    {1x1 cell}    {1x1 cell}

>> a{1,1}

ans =

    '00000:00:02'

>> a{1,2}

ans =

    '00000:00:03'

 


Ggf. musst du den regexp Code etwas anpassen, bzw. kannst du damit auch die restlichen numerischen Werte einlesen und du sparst dir csvread....alles eine Frage wie oft das ganze gemacht werden muss Wink
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
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.