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

String an spezifischen Positionen splitten und exportieren

 

Rupert

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2017, 13:46     Titel: String an spezifischen Positionen splitten und exportieren
  Antworten mit Zitat      
Hi Leute ich bin auf der Suche nach einer Lösung um eine Art Log-File zu parsen und zwar in folgendem Format:

Ausgangsdatei ist ein Textfile mit einer Spalte:

C0562300023
A4500143592
B1237630000
Q0002304591
..
weitere 10'000 solcher Einträge...
..

Ich möchte das umwandeln und in 3 Spalten aufteilen und exportieren:

C 05623 00023
A 45001 43592
B 12376 30000
Q 00023 04591

Wie geht das effizient?

Vielen Dank Smile


SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2017, 14:57     Titel:
  Antworten mit Zitat      
Hast du die Spalten bereits als Strings importiert?

Dann einfach so:

Code:
s='C0562300023'

s1=s(1)
s2=s(2:6)
s3=s(7:end)


Oder suchst du speziell nach dem Einlesen und Schreiben des Textfiles?
Private Nachricht senden Benutzer-Profile anzeigen
 
Rupert

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2017, 13:27     Titel: String an spezifischen Positionen splitten und exportieren
  Antworten mit Zitat      
Genau sowas hab ich gesucht Smile

Hab da noch ne weitere Frage:

Mit dem Folgenden Code lade ich ein Dat-File rein mit über 8000 Einträgen der Art 'V5353206932'. Ich möchte diese Einträgen aufsplitten und ins Excel exportieren. Das Ding braucht aber ewigs für diese Umwandlung...optimierung?

Code:
RawDat = importdata('Schicht.dat') %lädt das .dat File der Schicht als Cell-Array

%initialisierung

RawDatLength=length(RawDat)

T = cell(RawDatLength,3) %array generieren


for RawDatLine = 1:RawDatLength
   
    A1 = (RawDat{RawDatLine})     %Zugriff auf einen Eintrag im Array

    B1 = A1(1)
    B2 = A1(2:6)
    B3 = A1(7:end)     %aufteilen des Strings in mehrere Blöcke

    C2 = str2num(B2)
    C3 = str2num(B3)    %umwandeln in verarbeitbare Zahlen

    T{RawDatLine,1} = B1
    T{RawDatLine,2} = C2
    T{RawDatLine,3} = C3 %array füllen

end
 
xlswrite('test.xls',T)

 


Grüsse Rupert
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2017, 13:44     Titel:
  Antworten mit Zitat      
Evtl. hilft dir folgendes:

Code:
 B1=   cellfun(@(x) x(1),rawData)
  C2=   str2double(cellfun(@(x) x(2:5),rawData,'UniformOutput',false))
  C3=   str2double(cellfun(@(x) x(6:end),rawData,'UniformOutput',false))


Damit sparst du dir die Schleife und das sollte dann schneller gehen. Wie viel Zeit brauchst du denn momentan für das Einlesen, das Umwandeln und das Schreiben der Daten?
Private Nachricht senden Benutzer-Profile anzeigen
 
Rupert

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2017, 08:04     Titel: Effizienzsteigern
  Antworten mit Zitat      
Vielen Dank für eure Antworten.

Hat mir sehr weitergeholfen!
 
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.