Verfasst am: 04.05.2018, 11:14
Titel: Datei durchsuchen und Daten extrahieren
Edit: Beitrag war zuvor in der falschen Schublade erstellt
Moin Moin ihr fleißigen Helfer.
Ich habe folgendes Problem, in abgewandelten Formen schon öfter behandelt, aber die helfen mir nicht ganz weiter, da mein Problem ein wenig komplexer ist.
Ziel: Ich möchte eine .trk Datei bzw. .txt Datei. Diese ist aufgebaut. Eine kleine Wiederholung gibt es. Es wird eine Variable mit ihren Eigenschaften initialisiert, und danach werden in diese Variabel Informationen abgelegt. Die Informationen bestehen grob aus einem "Frame" und zugehöriger x,y Position. Zum Schluss wird ein Array mit allen Frames erstellt. Das ganze sieht dann so aus:
suchen (da das Wort MuskelAnfangA öfter vorkommt und nur in der vollständigkeit der Zeile einzigartig ist). Dann möchte ich folgende Information in die Variable
MuskelAnfangA = [...]
packen: (nur das Dickgedruckte)
<property name="[166]" type="object"> .
und dazugehörig die Koordinatenwerte
<property name="x" type="double">297.5</property>
<property name="y" type="double">198.0</property>
Die Auslese soll enden, wenn in der Datei alle Frames in das Array geschrieben werden.
Meine Idee wäre, zuerst nach
(1)
<property name="name" type="string">MuskelAnfangA</property>
suchen. Dann im folgenden, ab der Zeile von (1), suchen, wo
(2)
<property name="array" type="string">{
auftaucht, da diese Zeile das Ende repräsentiert. Von dieser Zeile direkt das Array mit den Frames abspeichern und dann zwischen (1) und (2) noch den einzelnen Frames suchen und die Koordinaten rausschreiben. Abgelegt in der Form
Für den, den es interessiert, habe ich erstmal eine Lösung programmiert. Klappt ganz gut, aber sicher könnte man das noch ein wenig komprimieren mit dem nötigen KnowHow. Leider noch nicht so viele Kommentare aber sehr elementar.
Code:
prompt = 'What shall be searched for?';
search = input(prompt,'s');
%Finde Startzeile
go = 1;
index = 1;
while(go) if matchS(index) == 1
Startzeile = index;
go = 0;
end
index = index+1;
end
%Finde Stopzeile
go = 1;
index = 1;
while(go) if matchE(index) == 1
Stopzeile = index;
if Startzeile < index
go = 0;
end end
index = index+1;
end
%Arraygr��e feststellen
lauf = char(CStr(Stopzeile));
ArrayGroesse = 1;
for c = 1:length(lauf) if lauf(c) == ','
ArrayGroesse = ArrayGroesse +1;
end end
for c = Startzeile:Stopzeile
if matchF(c) == 1
s = char(CStr(c));
MuskelAnfangA(index,1) = str2num(s(findstr(s,'"[')+2:findstr(s,']"')-1));
s = char(CStr(c+2));
MuskelAnfangA(index,2) = str2num(s(findstr(s,'">')+2:findstr(s,'</p')-1));
s = char(CStr(c+3));
MuskelAnfangA(index,3) = str2num(s(findstr(s,'">')+2:findstr(s,'</p')-1));
index = index +1;
end end
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.