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

 

Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2012, 15:41     Titel:
  Antworten mit Zitat      
Hallo ihr Lieben,

so hab eure Anweisungen genau befolgt und kriege die selbe Fehlermeldung wie smoen

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

Da ich leider blutiger Anfänger bin, wäre es nett, wenn ihr mir Schritt für Schritt erklären würdet wie ich vorzugehen habe, damit ich keine Fehermeldung mehr bekomme.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.07.2012, 19:42     Titel:
  Antworten mit Zitat      
Hallo,

1. Den Code von Schrank (01.09.2008, 10:30) in ein Editor-Fenster kopieren. Speichern, und den vorgeschlagenen Dateinamen nicht abändern.
2. Verzeichnis nicht wechseln. Falls das notwendig ist, das vorherige Verzeichnis zum Suchpfad hinzufügen.
3. Einen Aufruf wie diesen ausführen:
Code:
comma2point('C:\temp\meine_datei.txt')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 11:00     Titel:
  Antworten mit Zitat      
Vielen Dank für die Anweisung, aber anscheinend reicht Abi und ein fast abgeschlossenes Maschinenbaustudium nicht aus.

Nun kriege ich diese Fehlermeldung.... man oh man :-/

??? Error using ==> memmapfile.memmapfile>memmapfile.hChangeFilename at 303
Cannot access file "D:\Pohle\Schaufelschwingungen Folder_Modified.": Cannot open file. Existence?
Permissions? Memory? . . ..

Error in ==> memmapfile.memmapfile>memmapfile.memmapfile at 534
obj = hChangeFilename(obj, filename);

Error in ==> comma2point at 9
file = memmapfile(NewFile{1},'Writable',true);

bitte heltf mir :-/
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 11:08     Titel:
  Antworten mit Zitat      
So ok, ich glaub ich hab das Problem zumindest erkannt, auch wenn ich nicht weiß wie ichs beheben kann :-/

Ich habe versucht einen ganzen Ordner einzulesen und das kann nur eine einzelne Datei einlesen.
Aber ich habe millionen von Messwerten und alle 1000 wurde eine Datei erstellt.

Wie baue ich da jetzt eine Schleife ein, damit jede Datei nacheinander aufgerufen und die Kommata in Punkte umgewandelt werden?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.07.2012, 14:54     Titel:
  Antworten mit Zitat      
Hallo

einfach Schleife drumherum bauen

Code:

path2dir =  'c:\temp\'
files        =  dir(path2dir)
files        = {files(~[files.isdir]).name}
for k=1:length(files)
    comma2point(fullfile(path2dir,files{k}))
end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 12:05     Titel:
  Antworten mit Zitat      
viiieeeeelleeennn dank, was würde ich bloß ohne eure hilfe machen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 12:22     Titel:
  Antworten mit Zitat      
So habs mal das mal ausprobiert und bekomme jede menge Fehlermeldungen.

Vllt. habe ich die Schleife ja an die Falsche stelle gesetzt, wobei ich mitlerweile alles ausprobiert habe und jedes mal eine andere Fehlermeldung erscheint :-/

Bitte um Tipps und Ratschläge, wo muss diese Schleife hin? :-/

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.07.2012, 12:29     Titel:
  Antworten mit Zitat      
Alex89 hat Folgendes geschrieben:
So habs mal das mal ausprobiert und bekomme jede menge Fehlermeldungen.

Vllt. habe ich die Schleife ja an die Falsche stelle gesetzt, wobei ich mitlerweile alles ausprobiert habe und jedes mal eine andere Fehlermeldung erscheint :-/

Bitte um Tipps und Ratschläge, wo muss diese Schleife hin? :-/

Gruß


Hallo wenn du etwas ausprobiert hast, dann bitte genau posten was. Relevanter Codeabschnitt/ Fehlermeldung usw. Wir sind keine Hellseher!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex89
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 13:10     Titel:
  Antworten mit Zitat      
Also ich habe die 'path2dir' schleife jetzt direkt unter die funktionskopfzeile geschrieben.

wenn ich dann im command window
comma2point('C:\temp\meine_datei.txt')
eingebe ( natürlich mit meinem eigenen dateipfad^^) kommt folgende fehlermeldung :

??? Error using ==> copyfile
No matching files were found.

Error in ==> comma2point at 13
copyfile(File, NewFile{1});

das verstehe ich zum beispiel nicht, da das problem ohne die schleife nicht auftritt

danke schonmal

gruß, alexandra
Private Nachricht senden Benutzer-Profile anzeigen
 
Pusteblume25

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2015, 10:27     Titel: Problem mit der Funktion comma2point
  Antworten mit Zitat      
Hallo ihr Lieben,

tut mir leid, wenn ich das Thema nochmal aufrollen muss, aber ich versuche gerade einen txt-File umzuschreiben und die Kommata durch Punkte zu ersetzen. Ich probiere es momentan an einem einfachen Testfile der aus Kommazahlen besteht.

Der Testfile (test.txt) sieht folgendermaßen aus:

-0,0052974
-0,0141264
-0,024368
-0,0342565
-0,0444982
-0,0575651
-0,070632
-0,0780484

Ich habe die Funktion die oben schon aufgeführt ist, wie angewiesen kopiert, eingefügt und als comma2point.m abgespeichert.

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
 


Wenn ich jetzt die Funktion aufrufe und den Dateinamen einsetze, bekomme ich folgende Fehlermeldung:

Error using delete
Argument must contain a string.

Error in comma2point (line 13)
delete(file)

Error in Test_Comma2Point (line 4)
comma2point('test.txt')

Kann mir jemand helfen und sagen, was ich falsch mache oder womit matlab hier Probleme hat?
 
Harald
Forum-Meister

Forum-Meister


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

du kannst die delete-Zeile einfach weglassen:
http://de.mathworks.com/help/matlab.....eleting-a-memory-map.html

Ich habe eine sehr vage Erinnerung, dass das in einem älteren Release mal benötigt wurde.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2015, 10:42     Titel:
  Antworten mit Zitat      
Oh super, vielen Dank, das war scheinbar sein Problem Smile Jetzt läuft es problemlos Smile tolle Funktion
 
IIHollowManII
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 01.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2015, 22:51     Titel: Funktion in Automatisches Programm einbinden
  Antworten mit Zitat      
Hallo,

ich habe zu dem Thema eine weitergehende Frage:
Ich würde die Funktion gerne in ein Programm einbinden, dass es bei einer beliebigen .txt-Datei zunächst die Kommata durch Punkte ersetzt und anschließend die modifizierte Datei einließt. Aktuell weiß ich jedoch nicht wie ich die neu erstellte Datei flexibel aufgreifen kann. Gibt es eine Möglichkeit die neue Datei nach einer bestimmten Variablen zu benennen?
Soe sieht es aktuell aus:
Code:
fileID = uigetfile('.txt');
comma2point(fileID)
Datensatz = readtable(fileID, 'Delimiter', 'tab', 'ReadVariableNames',false, 'Headerlines', 1);

Die modifizierte Datei wird erstellt, aber die unmodifizierte eingelesen.

Oder gebe es die Möglichkeit die Funktion in das gesamte Programm zu integrieren und so zu ändern, dass die neu erstellte Datei einen festen Namen erhält, welchen ich dann aufrufen kann?
Hierzu wüsste ich jedoch auch nicht wie ich die Standartfunktion anpassen müsste :-/

Vielen Dank, ich hoffe mein Anliegen wurde deutlich
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.10.2015, 23:05     Titel:
  Antworten mit Zitat      
hallo. bitte hänge keine neune fragen an alte threads an. der beantwortet status wird dadurch sinnfrei.
bei der gennanten comma2point wird eine neue datei erstellt
Zitat:
% Generate a new file named Oldfilename_Modified.ending.
wenn du das nicht willst must du das halt so anpassen das keine kopie erstellt wird sondern gleich die vorhandene datei umgeschrieben wird. die file id beziht sich ja auf die unmodifizierte darum wird die auch eingelesen. wobei ich allerdings doch lieber dann die modifizierte datei öffnen würde. der name lässt sich ja aus deiner fileID generieren.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

man kann ja die Funktion so abwandeln, dass sie den neuen Dateinamen gleich zurückgibt.

Code:
function NewFile = 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=[Name{1}, '_Modified.',Name{2}];
    copyfile(File, NewFile);
    file    = memmapfile(NewFile{1},'Writable',true);
    comma   = uint8(',');
    point   = uint8('.');
    file.Data(( file.Data==comma)' ) = point;
    delete(file)
end


Oder, wie von Winkow beschrieben, direkt auf der Datei arbeiten.

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

Gehe zu Seite Zurück  1, 2

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.