Hallo.
Habe schon lange sowas nicht mehr gemacht und wollte mal die zugegebenermaßen ziemlich doofe Frage stellen, wie ich anfangen kann. Ich würde gerne ein ascii-file mit folgendem Format importieren, nur wie.
Alle built-in functions stören sich an den Strings, korrekt??
--"komplett" soll ignoriert werden
--aus den querzeilen soll jeweils ein vektor eingelesen werden und
erkannt werden, daß hier in eine neue Variable geschrieben werden soll
--die neuen dateien sollen dann jeweils "Ov" bzw "C+Ru" heissen
Es handelt sich um ein Datenfile aus einem Spektroskop. Die Querzeilen beinhalten die Versuchsparameter, die langen Spalten die Intensitätswerte.
Bin gerade dabei, den Code zu schnallen.
Kann es kaum fassen, daß sich jemand die Mühe gemacht hat. Echt hammerhart. Das muß dir ja echt Spaß machen....
Dauert jetzt erstmal ne Weile.
Mußte erstmal kucken, was "while 1" heißt.
Jetzt gerade über fopen--'rb' ...was ist das denn??
Jedenfalls vielen Dank da draussen, eucht zu nett!!
bedeutet: Öffne eine File zum Lesen (read) im binary mode. Im Text-Mode "rt" werden die Zeilen-Enden-Zeichen in Abhängigkeit vom Betriebssystem behandelt. Z.B. unter Windows werden CHAR([13, 10]) in CHAR(10) übersetzt, ohne den aktuellen File-Lese-Cursor weiterzuschieben. Dies ist selten nützlich, kostet aber Rechenzeit.
"while 1" ist einfach nur eine Endlos-Schleife, die mit BREAK unterbrochen wird, nachdem FGETL statt eines Strings (getestet mit ISCHAR) die Ausgabe 0 zurückgeliefert hat (also das File-Ende erreicht ist).
Ja, Matlab macht mir Spaß. Es war auch schneller das zu programmieren, als zu beschreiben, wie es gemacht werden könnte. Leider kann ich es auf meinem Internet-Rechner nicht laufen lassen (kein Matlab drauf), so dass Du es noch testen müsstest. Bei Error einfach nochmal posten.
OK, vermutlich beschränken sich deine Programmierfähigkeiten nicht nur auf die Verabreitung von irgendwelchen Messdaten
Das führt andererseits dazu, daß ich nicht wirklich die einzelnen Schritte des Codes nachvollziehen kann, zumindest nicht so gut, daß ich selbst Code reinbasteln könnte; jedenfalls nicht ganz auf die Schnelle. Shame on me. Gut auf jeden Fall, fgetl zu kennen.
ZB hätte ich jetzt erwartet, daß in "PARAM" der Inhalt der jeweiligen Querzeile aus dem Ursprungsfile steht. Das tut aber aber nicht, wie ich feststellen mußte. Wäre das ausgegeben gewesen, hätte ich da mal anknüpfen können.
Was ich letztlich bräuchte, da du schon so nett anbietest, auch wenn kein ERROR pop-upt: Ein File mit zwei Spalten x und y, wobei die idealerweise Tabstop-getrennt sein und Kommazahlen mit "Punkt" dargestellt sein sollten, denn so hätte das Peak-fit Programm das gerne. y liefert schon dein Code und schreibt das in die Files, genau so, wie ich das wollte. x könnte wie folgt erzeugt werden:
Code:
xpre(1)=Querzeile(1);
for i=2:length(y)
xpre(i)=xpre(i-1)+Querzeile(3);
end for i=1:length(y)
x(i)=(Querzeile(8)-xpre(i))*(-1);
end
ich versuche mal Deinen Code einzubauen. Das geht nicht direkt, weil die LENGTH(y) nicht von Anfang an bekannt ist. Das geht aber trotzdem, weil man die X-Werte auch Schritt für Schritt erzeugen kann.
Vielleicht schaffe ich ads heute Abend, Du kannst es aber auch selbst mal versuchen. Mit dem Debugger (kleine rote Punkte links neben dem Code im Editor setzen) kannst Du übrigens das Programm Zeile-für-Zeile bearbeiten und Dir ganz genau in aller Ruhe anschauen, was passiert.
Hallo Jan,
die Sache mit dem Debugger is ja ziemlich gut zu wissen.
Was mir die größten Probleme mit dem Verständnis bereitet, ist die scheinbar willkürliche Ausgabe von "fopen".
Die beiden Codezeilen
sind mir leider auch völlig unklar. Zusätzlich fehlt mir jedes Verständnis für die Notwendigkeit der Definition von NL.
Auch nach längerem Hin und Her ist es mir zumindest heute nicht so ganz klar geworden. Ich denke zwar schon, daß ich das irgendwie schaffen sollte, aber vielleicht hast du mehr Spaß daran??
Beleidigt wäre ich nicht, wenn du das machen würdest...andererseits wenn nicht, bin ich trotzdem schon sehr dankbar.
Ich bin am Zweifeln. Es ist nicht sinnvoll Dir ein Programm zu schreiben, wenn Du es nicht debuggen oder kleine Anpassungen vornehmen kannst. Wenn diese Aufgabe eine Arbeit ist, die erledigt werden sollte, dann sollte sie auch richtig erledigt werden.
Also beschäftige Dich noch ein wenig mit FOPEN und dem Zeilen-Enden-Zeichen, bis es Dir klar wird. Dann melde Dich doch nochmal wieder.
Naj, was heißt "Aufgabe...., die erledigt werden sollte". Ich habe eben nicht die größte Lust, alle Spektren der nächsten 3 Jahre per Excel durchzuwursten
Aber du hast sicher recht: Lieber morgen mal mit klarem Kopf draufkucken. Danke dir auf jeden Fall vielmals!
Es hakt an vielen Stellen vermutlich.
Dein Rahmenwerk ist einfach ne Ecken zu mächtig für meine Anwendung oder so
evtl könntest du mich nochmal auf die richtige Spur bringen?? Vermutlich fehlt vor allem die Zuordnung von x zu den jeweiligen Files und die Ausgabe von x...nur schnall ich einfach "fopen" nicht.
Gibt es nicht irgendeine Importfunktion, mit der ich das ganze Ursprungsfile als Matrix oder cell array einlesen kann??
Von da an wäre es für mich sehr einfach mit endlosen wunderschönen for-Schleifen weiterzumachen.. wenn das wohl leider nie elegeant werden wird, funktioniert es auch. Ich kann da leider nicht einsteigen in deinen Code..??..
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.