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

Table -> String -> number

 

Sam-son
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 28.03.23
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2023, 09:49     Titel: Table -> String -> number
  Antworten mit Zitat      
Hallo Forum,

ich möchte Daten aus einer Datei einlesen, die mehrere Millionen Zeilen hat, und stoß dabei auf folgendes Problem:

Eine Zeile in der einzulesenden Datei sieht wie folgt aus:

"LINESTRING(13.3338967 49.0606778,13.3338619 49.0607431)",10.4444347858429000,1

Dabei stehen in den Klammern Koordinaten und dahinter noch zwei weitere Werte, die den Spalten 2 und 3 zugeordnet werden.

Ich lese das ganze ein mit:

Code:

    Table = readtable('Datename.csv','NumHeaderLines',1);
 


Ich habe auch folgendes probiert

Code:

    Table = readtable('Dateiname.csv','NumHeaderLines',1,'ExpectedNumVariables',6);
 


Das ändert aber nicht so viel.

Mein Problem besteht in der ersten Spalte. Ich würde gerne jeweils diese vier Zahlen einem Spaltenvektor zuordnen.
Bislang kann ich die erste Spalte zu einem String machen und die übrigen Zeichen entfernen:

Code:

    CoordinateStrings = string(Table{:,1});
    str1 = strrep(CoordinateStrings,'(', ' ');
    str2 = strrep(str1,')', ' ');
    str3 = strrep(str2,'LINESTRING', ' ');
 


(nicht super elegant, aber es geht)

Wenn ich jetzt eine Zeile nehme, kann ich die zu einem Zeilenvektor machen:

Code:

    CoordinateArray = str2num(str3(1))
 


Aber ich schaffe es nicht (ausser in einer for-Schleife, die ich aber vermeiden möchte) die Zahlen in Spaltenvektoren zu schreiben.

Hat da jemand von Euch einen Tip für mich?

Vielen Dank bereits im Voraus,
Grußin die Runde!

Sam-son
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2023, 09:32     Titel:
  Antworten mit Zitat      
Hallo,

innerhalb eines Tables würde ich zu Zeilenvektoren raten, etwa so:

Code:
Table.a = extractBetween(Table.a, "(", ")");
tmp = cellfun(@(x)strsplit(x, [" ", ","]), Table.a, "UniformOutput",false);
tmp = str2double(vertcat(tmp{:}));
Table.a = tmp


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.