ich hätte da eine Frage, was das Einlesen von *.txt Dateien angeht. Ich weiss, dieses Problem ist schon häufig im Forum besprochen worden, jedoch habe ich für meinen Fall keine Lösung finden können.
Zu meinem Problem:
Ich habe in einem Ordner viele *.txt Files liegen. Im Forum habe ich gefunden, dass ich mittels
alle Dateien einzulesen, was jedoch nicht funktioniert. Hier wird nur eine Datei eingelesen und nicht der ganze Ordner mit allen Dateien. Hier komme ich leider nicht weiter.
Als kleine Ergänzung:
Die Textdateien enthalten Zeilenweise (unterschiedlich viele) Informationen in Form von String Zahl Zahl Zahl (also in Matlab: %s %f %f %f).
Ich möchte diese Zahlen, mit einer Referenzzahl (genauer gesagt einem Referenzvektor) verrechnen. Die Grundsätzliche Berechnung (aber sehr undynamisch) funktioniert soweit.
Code:
%Dies soll später mal dynamisch sein mit Werten aus der *.txt !
Ref_RE = [172117];
Ref_LI = [186312];
%Referenz - ist statisch.
Ziel_RE = [186312];
%Berechnung des Vektorbetrags !
Bet_RE = sqrt(sum(Ref_RE.^2))
Bet_LI = sqrt(sum(Ref_LI.^2))
%Berechnung des Vektorbetrags der Referenz!
Bet_ZI= sqrt(sum(Ziel_RE.^2))
%Subtraktion der Beträge
Ergebnis = Bet_ZI_F - Bet_RE_F
Die Frage mit der Bitte um einen Rat mal auf den Punkt gebracht:
Ich habe Verschiedene *.txt Dateien (%s %f %f %f - aber unterschiedliche Anzahl von Zeilen). Deren Werte möchte ich mit einem Standardreferenzwert verrechnen. Dabei sollen die Werte innerhalb einer *.txt Datei automatisch in die Formel eingesetzt werden und verrechnet werden. Dabe ist es mir total wichtig zu wissen, bei welcher Datei (repräsentiert einen Namen) und unter welcher ZEILE (! also Tor1 oder Tor2 etc) welches Ergebnis herauskommt.
wollte ich mir am Ende dann entsprechend die Ergebnisse eintragen lassen. (Aber da suche ich mir im Forum noch heraus, dass in Spalte A der Dateiname steht und B der String der TXT Datei etc)
Ich habe auch mal den Import Wizard benutzt - und fande die Anordnung "Create vectors from each row using row names" ganz schön. Wäre dies Prgrammierertechnisch ungeschickt?
Um einen Rat wäre ich unendlich Dankbar - und ich habe wirklich das Forum 2 Tage lang durchforstet
ah ok ich sehe es - dann ist es also korrekt, dass im Workspace unter der Variable fileName immer nur ein File angezeigt wird? Sprich das letzte File im Ordner?
ah ok ich sehe es - dann ist es also korrekt, dass im Workspace unter der Variable fileName immer nur ein File angezeigt wird? Sprich das letzte File im Ordner?
Ja, das ist korrekt. Du hast die Dateinamen ja auch in Dateiliste, brauchst sie also nicht nochmal?
In text solltest du aber die Daten für alle deine Dateien sehen; schau mal in den Variable Editor. Die Variable solltest du übrigens anders nennen, da es auch einen Befehl text gibt.
Zitat:
kann man bei textscan ('%s %f %f %f') den dritten parameter direkt ansprechen?
Was meinst du damit? Wenn du nur den dritten Parameter brauchst, kannst du dir anderen mit %*s bzw. %*f überspringen. Ansonsten kannst du dir aus dem für jede Datei erzeugten Cell Array jeweils die dritte Komponente herausholen.
Jetzt stehe ich vor dem Problem, dass wenn ich die 3 Zahlenwerte mit einem vorher definierten anderen Wert (gleiches Format) verrechnen möchte, macht er dies nur mit dem letzten Eintrag in der *.txt - Datei.
Ich habe schonmal in der Hilfe geschaut, aber mit dem
Ziel für mich wäre, den Referenzwert mit den Werten innerhalb des *.txt Files zu verrechnen. Dies soll Zeilenweise passieren. Habe ich also z.B 5 Einträge in dem *.txt File, so müssten mit fünf Ergebnisse LE = herauskommen. Dabei soll der Name immer vor dem Ergebniss stehen. (hier: a_Ber)
Ich hatte das Problem, dass ich in Vergangenheit nur die Verrechnung des letzten Eintrags des *.txt Files mit dem Referenzwert angezeigt bekommen habe. Oder er die Schleifen unendlich durchgelaufen ist.
Optimal wäre, wenn man sich noch das Minimum und Maximum (ich denke mit
es ist sehr schwierig zu sehen, was der Code eigentlich machen soll. Ich kann mir nicht vorstellen, dass die verschachtelten for-Schleifen sinnvoll sind, weil du auf die Weise jeden Eintrag jeder Zeile mit jedem anderen Eintrag jeder Zeile kombinierst.
Wenn du den Code laufen lässt, erhältst du die folgende Fehlermeldung:
Zitat:
??? Undefined function or method 'power' for input arguments of type 'cell'.
Das ist auch klar, weil du mit Cell Arrays eben nicht "rechnen" kannst.
Wie sollen die Ergebnisse erhalten bleiben, wenn du sie in jedem Schleifendurchlauf überschreibst? Du musst auch hier indizieren; siehe Beitrag von Winkow und von mir (9.3., 23:15).
Grüße,
Harald
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.