File: C:\Pfad\p-1-1.adv, Probe 1 :
u -1.60 6.38 9.199 172.990
v 0.60 0.77 -4.231 61.010
w 1.13 12.87 -7.624 138.531
File: C:\Pfad\p-1-2.adv, Probe 1 :
u -0.61 1.44 -0.934 0.533
v 1.09 0.48 0.085 0.185
w -0.32 0.96 -0.233 -0.390
File: C:\Pfad\p-1-3.adv, Probe 1 :
u -1.41 1.80 0.378 0.074
v 0.82 0.51 -0.429 0.883
w -1.51 237.32 1.317 1.538
File: C:\Pfad\p-1-4.adv, Probe 1 :
u 0.45 1.18 -0.609 -0.598
v 0.77 0.27 0.248 1.660
w -67.00 1.64 -0.077 0.845
File: C:\Pfad\p-2-1.adv, Probe 1 :
u -0.70 21.82 4.919 81.269
v 1.36 2.04 -4.513 65.076
w -0.91 48.00 -4.012 55.430
...
Ich möchte nun aus den Ursprünglichen Dateinamen der einzelnen .adv-Dateien (p-1-1.adv, p-1-2.adv ...) die beiden Zahlen auslesen und in einem cell speichern. Dabei stellt die erste Zahl die x-Koordinate dar und die zweite die z-Koordinate.
Weiterhin benötige ich die Geschwindigkeiten u, v und w, also die ersten Zahlen welche hinter u,v,w stehen. Diese sollen auch jeweils in einem cell gespeichert werden.
Mein Gedanke war in einer Schleife abzufragen welchen Zeilenanfang das Dokument hat und anschließend zu sagen was aus der betreffenden Zeile Importiert werden soll. So recht ist mir das aber noch nicht geglückt.
if ~iscell(filename)
filename={filename};
end
anz_richt = numel(filename);
for index =1:anz_richt
file = strcat(pathname,filename{index});
fileID = fopen(file,'r');
x = {};
while ~feof(fileID) line = fgetl(fileID);
ifstrcmpi(line(1), 'File')
x = [x; textscan(l, '%n')]; % wenn das erste Wort File ist, dann Daten auslesen und anhängen. (HIER KOMME ICH NICHT WEITER) end end
end
msgbox_text1='. Datensatz erfolgreich importiert';
msgbox_text=[kstr msgbox_text1];
uiwait(msgbox(msgbox_text));
das ist keine sehr ausführliche fehlerbeschreibung. außerdem wäre es besser wenn du eine beispieldatei zur verfügung stellst damit man damit rumprobieren kann.
_________________
Das "so recht ist mir das noch nicht geglückt" sollte heißen, dass ich so weit gekommen bin wie in meinem source-code zu sehen ist und mir dann das nötige know-how ausging wie ich am besten mein Problem lösen könnte. Da ich auch nicht wirklich eine Idee habe wie ich am besten da ran gehe, gingen mir auch die Ideen aus nach welchen Schlagwörtern ich in diesem Fall am besten suchen könnte um eine Lösung zu finden...
Die Datei selber konnte ich leider nicht anfügen. Es kam ein Ausschrift "Die Erweiterung dat ist hier verboten". Aus diesem Grund habe ich einen Auszug aus der Textdatei eingefügt.
Gibt es denn eine andere Möglichkeit die .dat-Datei hier zu zeigen/ weiter zu geben?
mir den Wert an der 41ten Stelle der betreffenden Zeile auslesen kann und in einem Cell abspeichern kann. Allerdings möchte ich nicht abhängig von der Zeichenanzahl sein. Ich benötige also einen Befehl der aussagt "nimm die erst/ zweite Dezimalzahl aus genau dieser Zeile"
Du hast noch nicht klar beschrieben, was das Problem ist, das Du lösen möchtest.
Zitat:
Mein Gedanke war in einer Schleife abzufragen welchen Zeilenanfang das Dokument hat und anschließend zu sagen was aus der betreffenden Zeile Importiert werden soll. So recht ist mir das aber noch nicht geglückt.
Was soll aus welchen Zeilen importiert werden. So lange Du das nicht erklärst, können wir keine Tipps dazu geben.
Wenn "Multiselect" ausgeschaltet wird, ist es nicht nützlich eine Schleife über die Files laufen zu lassen.
Filenamen hängt man besser mit
fullfile
aneinander als mit
strcat
, weil ersteres die File-Separatoren berücksichtigt.
Jedes
fopen
benötigt ein
fclose
, sonst gehen Dir irgendwann die File-Handles aus.
ifstrcmpi(line(1), 'File')
tut bestimmt nicht, was es soll: Du vergleichst den ersten Buchtaben der Zeile mit dem String 'File'. Aber das kann niemals identisch sein. Besser:
if strncmpi(line, 'File', 4)
Zitat:
x = [x; textscan(l, '%n')]; % wenn das erste Wort File ist, dann Daten auslesen und anhängen. (HIER KOMME ICH NICHT WEITER)
Und für "hier komme ich nicht weiter" lässt sich kein guter Ratschlag geben.
Zitat:
mir den Wert an der 41ten Stelle der betreffenden Zeile auslesen kann und in einem Cell abspeichern kann. Allerdings möchte ich nicht abhängig von der Zeichenanzahl sein. Ich benötige also einen Befehl der aussagt "nimm die erst/ zweite Dezimalzahl aus genau dieser Zeile"
Das ist auch noch nicht nachvollziehbar. Was ist denn "Inhalt"? Wieso suchst Du den 41.sten Buchstaben?
Zitat:
"nimm die erst/ zweite Dezimalzahl aus genau dieser Zeile"
Das klingt schon besser. Wenn Du die zweiter Dezimalzahl suchst, müssten man noch wissen, was davor kommt und wie Du die Dezimal-Zahlen von dem Drumherum unterscheiden kannst - Kommas? Leerzeichen?
Die beste Herangehensweise ist es also, das Problem zunächst präzise zu erfassen und dann auch klar aufschreiben zu können. Dann finden sich die Lösungen fast wie von selbst.
kann ich nun mein Dokument durchsuchen und immer wenn "File" am Zeilenanfang steht wird die 41te Stelle aus eben genau dieser Zeile in x abgespeichert. Da ich aber nun nicht immer nur die 41te Zahl auslesen möchte, sondern wenn zum Beispiel der Pfad ein anderer ist oder die x-Koordinate zweistellig ist diese eben trotzdem komplett auslesen möchte benötige ich einen befehl oder eine Funktion mit welcher dies möglich ist.
das ist allerdings erstmal nur ein codeschnippsel mit dem ich herum probiere... Damit kann ich zumindest schonmal die stellen an welchen überhaupt Ziffern stehen bestimmen.
Das ganze steht natürlich eingebettet in dem Code von oben. Jetzt muss ich nur noch das Vorzeichen filtern...
Einstellungen und Berechtigungen
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
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.