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

Anfänger versucht TXT Daten einzulesen

 

Tinko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2007, 12:45     Titel: Anfänger versucht TXT Daten einzulesen
  Antworten mit Zitat      
Hallo liebe Leute

ich habe eine txt Datei die so aussieht

NaN -90,0 -45,0 0,0 45,0 90,0
-90,0 1,5 1,8 2,0 1,8 1,5
-45,0 1,8 2,0 2,1 2,0 1,8
0,0 1,5 1,8 2,15 2,1 2,0
45,0 1,8 2,0 2,1 2,0 1,8
90,0 1,5 1,8 2,0 1,8 1,5

Es handelt sich um eine dreidimensionale Messung mit Angabe der Winkel im Kugelraum. In der ersten Zeile sind die Winkel der einen Achse und in der ersten Spalte die Winkel der zweiten Achse. In den restlichen Feldern sind die Messdaten. Um das ganze in karthesische Daten umzurechnen brauche in in Matlab drei Matrizen [Winkel1] [Winkel2] und [Messwerte].
Jedoch habe ich Probleme beim einlesen.

Vielleicht könnt ihr mir beim Einlesen helfen?
Ich habe es mit textread versucht.
Probleme:
1. Komma als Dezimaltrenner
2. Unbekannte Matrizengröße

Das Problem mit dem Komma wollte ich lösen, in dem ich die Daten als String einlese und danach das Komma mit nem Punkt ersetze. das habe ich auch hinbekommen. Aber das Problem mit der unbekannten Matrizengröße kriege ich nicht hin. Ich weiß also leider nicht wieviele Teilschritte zwischen -90° und 90° liegen. Also müsste ich die Zeilen und Spalten im TXT vorher auslesen. Ist das möglich?


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 13.11.2007, 19:47     Titel:
  Antworten mit Zitat      
wo ist das Problem mit unbekantem Anzhal von Messdaten?
Du weißt doch ganz genau, das ein Datensatz aus 2 Winkel und 3 Messwerten besteht?
Wenn Du also 50 Einzelnen Werte eingelesen hast, dann hast Du also 50/(2+3) Datensätze eingelesen! Wenn alle eingelesenen daten als ein Zeilen oder Spaltenvektor vorliegen, dann kannst Du den mit RESHAPE umformen

>> reshape(data,length(data)/5,5)

Das Problem mit der Komma als Trennung würde ich wie folgt lösen:
1. zuerst den ganzen File als ein String einlesen, danach mit STRREP funktion alle Kommas gegen Punkte ersetzen und das Ergebnis wieder als Textfile speichern
2. den neuen Textfile mit DLMREAD auslesen

Wenn Du so vorgehst wie beschrieben, dann musst Du die Daten hinterher nicht mehr RESHAPEn, da DLMREAD liest dann die Daten automatisch als Matrix in der Form N-Zeilen X 5




MfG





MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 20.11.2007, 12:58     Titel:
  Antworten mit Zitat      
sers

versuch es mal so


Code:
Pfad = strcat('G:\...\', name, '.txt')

fid = fopen(Pfad,'r')

Zeile1 = fgetl(fid);      
Zeile2 = fgetl(fid);
 


dann kannst du diese einfach in ein mehrdimensionales Feld schreiben
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
guestman

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2008, 09:50     Titel: komma punkt konvertier funktion
  Antworten mit Zitat      
Hallo,
nachdem ich im netzt nicht schönes finden konnte wollte ich hier mal meine lösung des problems reinstellen:

Code:

function [convertedData]=convertCommaToPoint(originalData)
% The Function loads a table with european style decimal point and
% converts it into an americon style table. Only works with 2 position after
% decimal point

[m,n] = size(originalData)

for i = 1:m
    for j = 1:(n/2)
        convertedData(i,j) = originalData(i,(j*2)-1)+originalData(i,(j*2))/100; %100 -> 2 Nachkommastellen
    end
end

end    

 
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 01.09.2008, 10:30     Titel:
  Antworten mit Zitat      
Hallo,
also um die Dezimaltrennzeichen in einer Datei zu ändern benutze ich immer die leicht modifizierte Version von "comma2point" welche über google einfach zu finden ist (Ich bin im übrigen nicht der Urheber dieses Codes).
Code:
function comma2point(File)
% Generate a new file named Oldfilename_Modified.ending. In the new File all
% ',' are changed to '.' Needs a full datapath and filename as input.
   
    Name=textscan(File,'%s%s','delimiter','.');
    NewFile=strcat(Name{1}, '_Modified.',Name{2});
    copyfile(File, NewFile{1});
    file    = memmapfile(NewFile{1},'Writable',true);
    comma   = uint8(',');
    point   = uint8('.');
    file.Data(( file.Data==comma)' ) = point;
    delete(file)
end


Diese Funktion ist in Punkte Schnelligkeit von nichts von mir gefundenem zu überbieten. Nachdem du die Datei eingelesen hast, kannst du die neu erstellte Datei mit den Kommatas natürlich mittels
Code:
wieder löschen.

Das einlesen der Textdatei (die heißt dann "alterName_Modified.txt") geht dann über das übliche prozedere.
Stichwörter sind
Code:


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2011, 14:27     Titel:
  Antworten mit Zitat      
Könnte mir jemand sagen wie man in dieser comma2point-Funktion den"kompletten Pfad und Dateinamen" eingibt?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.05.2011, 15:33     Titel:
  Antworten mit Zitat      
Hallo

steht doch in Kommentar Wink

Code:

comma2point('C:\temp\meine_datei.txt')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Smoen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 16:55     Titel:
  Antworten mit Zitat      
Hallo,

ich bin auch noch Matlab- Anfänger und habe das Problem, dass ich beim Anwenden der Comma2point Funktion diese Fehlermeldung bekomme:

??? Undefined function or method 'comma2point' for input arguments of type
'char'.

Ich will eine .dat Datei auslesen und die Comma in Punkte wandeln, die so aussieht:

X/[mü] Y/[mü] Z/[mü]
wert1, wert2, wert3,
wert4, wert5, ...

Grüßle
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 11.07.2011, 17:12     Titel:
  Antworten mit Zitat      
Hallo Smoen,

hast Du die Funktion denn bei Dir unter ihrem Namen gespeichert? Wenn ja, musst Du eventuell noch den Ordner, in den Du sie gespeichert hast, dem Suchpfad hinzufügen (Stichwort addpath). Oder Du kopierst sie nochmal in dein work-Verzeichnis.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2011, 11:31     Titel:
  Antworten mit Zitat      
Hey Bijick,

habe es irgendwie hinbekommen Smile
Trotzdem danke für deine Antwort.
Wenn es in diesem Forum einen Danke-Button gäbe, würde ich ihn drücken!

Grüßle
 
mijo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2011, 16:28     Titel: absoluter anfänger
  Antworten mit Zitat      
hallo leute,
bin kompletter anfänger, könnt ihr mir bitte sagen wo genau ich den pfad angeben muss? kann ich den ganzen text einfach ins command window kopieren?
dank und gruß
 
mijo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2011, 18:09     Titel:
  Antworten mit Zitat      
habs.....
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.11.2011, 18:20     Titel: Re: absoluter anfänger
  Antworten mit Zitat      
Hallo mijo,

Ich verstehe die Frage nicht.
Wobei möchtest Du denn den Pfad angeben? Und welchen Text möchtest Du aus welchem Grund ins Command-Window kopieren?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2012, 19:26     Titel:
  Antworten mit Zitat      
hallo leute,

ich muss diesen thread nochmal nach oben ziehen.
ich habe auch eine .txt - datei in der die kommas durch punkte ersetzt werden sollen.
der code den schrank gepostet hat, habe ich gesehen. aber nun meine frage hierzu:
was muss ich denn alles mit meinem dateinamen (.txt-datei) welche ich umwandeln will ersetzen?
file,name?
 
Harald
Forum-Meister

Forum-Meister


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

das ist ja das schöne an Funktionen: du musst gar nichts abändern.

Den Code von Schrank in den Editor kopieren, speichern (am besten unter dem vorgeschlagenen Namen), und dann den von denny genannten Aufruf:
Code:
comma2point('C:\temp\meine_datei.txt')
z.B. ins Command Window schreiben und ausführen, und du hast die Datei mit Punkten statt Kommas.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.