ich habe ein kleines Problem mit meinem Programm und hoffe hier Hilfe zu finden. Ich beschreibe kurz mein Tool und stelle dann meine Frage.
- Das Tool findet in einer Textdatei bestimmte Variablen und speichert diese in der Vektor 'vars'. Anschließend werden diese noch aussortiert und die letztlich gesuchten Variablen in dem Vektor 'ergebnis' gespeichert.
- Dann lade ich ein Exel-sheet, um die Variablen mit diesen im Vektor 'ergebnis' zu vergleichen. Bis hierher passt alles.
Aber das Vergleichen will irgendwie will es nicht klappen. Ich versuche es mit der Funktion strcmp(x,y)... das müsste doch richtig sein oder!? Manchmal findet er die erste Variable und speichert diesen einen Index aber das wars dann. Daher denke ich, dass ich von einer Lösung nicht all zu weit weg bin. Finde die Bugs aber einfach nicht! Wäre sehr dankbar über einen Tipp!
Hier siehst du mein Programm! Wäre super, wenn du mir helfen könntest!
Vielen dank in voraus.
Grüße Micha
wenn es sich um eine xml-Datei handelt, ist es besser diese mit xmlread zu lesen:
Code:
doc=xmlread(fullfile(PathName,FileName));
vt=doc.getElementsByTagName('VT');
vars=cell(vt.getLength,1);
for k=0:vt.getLength-1
vars{k+1}=char(vt.item(k).getTextContent);
end
Die festen Schleifengrenzen haben ihren Grund?
Oder sollte es sich um size(raws,1) oder length(vars) handeln?
Dann wird es für mich verwirrend. j wird innerhalb der while-Schleife
immer mal wieder auf 1 gesetzt. Für a wird aber nirgends eine Abbruchbedingung
festgelegt. p ist überflüssig, da a und p immer den gleichen Wert enthalten.
Du hast immer noch zwei Variablen mit identischen Werten, die sind jetzt nur umbenannt: a und p
Micha123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.11.2012, 12:49
Titel:
Hi Sirius,
danke für deine Anteort und Tipps! Also das mit xmlread muss ich noch probieren! Bin noch am Anfang von MATLAB... deswegen tu ich mich noch ein bisschen schwer!
Die festen Schleifengrenzen haben nur den Grund, weil das Exel-sheet immer gleich viele Zeilen hat... deswegen habe ich die Grenzen so gewählt. Mein Plan dabei war, dass ich nach der Reihe eine Variable aus dem Vektor 'ergebnis' mit allen aus dem Exel-sheet vergleiche und wenn ich eine Übereinstimmung gefunden habe (TS==1) den Index in 'endergebnis' abspeichere. Dann inkremmentiere ich Vektor 'ergebnis' und 'endergebnis' (p=p+1)... fange im exel-sheet aber wieder von oben an (j=1). Variable a habe ich raus genommen... stimmt was ihr gesagt habt. Ist immer a=p.
Weiß nicht, ob das so zu kompliziert gedacht ist aber so erschien es mir logisch.
Die intersect Funktion hört sich ziemlich gut an für das Problem. Danke!
Habe dazu in der Hilfe nachgelesen und noch Fragen.
Hier könnte ich doch die Indizes der Übereinstimmungen wie du es gemacht hast einfach in 'ib' ablesen. Muss ich da noch anderes beachten, weil es nicht funktioniert. Muss ich bei dem Ergebisvektor etrwas beachten... weil 'ia' 'ib' nicht im workspace auftaucht.
Grüße
Micha
Micha123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.11.2012, 11:40
Titel:
Hallo zusammen,
vielen Dank für eure Mithilfe. Ich habe es jetzt nach folgender Methode gelöst.
So klappt es. Die Indizes werden in den vektor 'indizes' geschrieben. Mit intersect hat es nicht funktioniert, weil die DAtentypen scheinbar nicht gepasst haben obwohl ich zwei cells habe.
Naja, so gehts auf jeden Fall !
Danke nochmal für eure mithilfe!
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.