WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Einlesevorgang einer Textdatei mittels Zeiger beschleunigen

 

sinus
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.11.08
Wohnort: Fulda
Version: ---
     Beitrag Verfasst am: 18.11.2008, 12:08     Titel: Einlesevorgang einer Textdatei mittels Zeiger beschleunigen
  Antworten mit Zitat      
Wir haben zwei Programme. Ein Programm nimmt Sensordaten entgegen und speichert diese in eine Textdatei ab.

Diese Textdatei wird mittels dem zweiten Programm eingelesen, ausgewertet und graphisch veranschaulicht.

In der Zwischenzeit sammelt das erstere Programm weitere Sensordaten und speichert diese erneut in diese Textdatei ab.

Möchte man diese neu hinzugekommenen Daten graphisch auswerten, muss die gesamte bisher vorhandene Textdatei erneut komplett eingelesen werden.

Nun möchten wir dieses jedoch insofern erleichtern, dass wir mittels einem Zeiger den letzten Stand markieren und alle im Nachhinein neu hinzugekommenen Daten einlesen, um so Zeit etc. zu sparen.

Wir müssen anmerken, dass wir bei Matlab absolute Neuanfänger sind und wir diese Programme bereits vorangefertig erhalten haben und wir diese Programme um einige wünschenswerte Funktionen erweitern sollen.

Um das Problem zu lösen, haben wir uns schon in der help-Funktion bedient und uns so auch schon Funktionen wie fseek, fscan etc. näher angeschaut.

Gerne senden wir Ihnen hierfür auch die speziellen Programme mittels Mail zu.

Wir würden uns freuen, wenn Ihr uns einen Vorschlag und ein paar Tipps geben könntet.

Für weitere Fragen stehen wir Ihnen gerne zur Verfügung.

Vorab ein großes Dankeschön!!!
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Lim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2008, 22:24     Titel:
  Antworten mit Zitat      
Wenn man für den Dateizugriff eine Funktion benutzt, die vorab ein fopen und abschließend natürlich fclose benötigt, wie z.B. fscanf oder textscan, wird automatisch ein 'file position indicator' mitgezählt, der angibt, wo man sich in der Datei befindet. Wendet man (vor fclose!) eine solche Funktion erneut an, arbeitet sie automatisch ab dieser Position weiter.

Angeben kann man sich die Dateiposition mittels ftell, was man aber eher selten braucht.
Die bevorzugte Herangehensweise aus meiner Sicht (wenn die Kommunikation zwischen den Programmen wirklich nur über Dateien laufen kann...):
Datei per fopen mit permission 'r' öffnen, mit textscan bis zum vorläufigen Ende lesen, Daten verarbeiten/darstellen/abwarten, wieder textscan nutzen, Daten verarbeiten/... usw., am Ende fclose.

Wenn man die Datei zwischendurch nicht offen halten möchte (oder man gar nicht in die offene Datei schreiben kann, bin mir nicht sicher), lässt man sich nach textscan die Position mit ftell geben, schließt die Datei mit fclose, öffnet später wieder mit fopen und geht mit fseek an die letzte Position usw.

Unschön wird's, wenn man aus einer Datei liest, in der gerade nur ein 'halber Datensatz', z.B. eine nicht zu Ende geschriebene Zeile liegt. Dann muss man sich per Hand darum kümmern, das Ende des letzten Datensatzes zu finden, z.B. den letzten Zeilenumbruch, etwa unter Zuhilfenahme von strfind oder regexp, und den 'file position indicator' mit fseek zurückschieben.
Eventuell kann man auch den format-String von textscan so gestalten, dass nur vollständige Datensätze eingelesen werden können.

Ich befürchte, bevor Sie sich die jeweiligen doc-Seiten angeschaut haben, ist Ihnen nicht gerade alles klar, aber ich hoffe, dass Sie das weiterbringt.

Grüße
Lim
 
sinus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.11.08
Wohnort: Fulda
Version: ---
     Beitrag Verfasst am: 27.11.2008, 17:25     Titel:
  Antworten mit Zitat      
Hallo liebe Forumgemeinde..,

also auch nochmal vielen Dank an den user "Gast". Leider konnten wir mit seiner Antwort nicht wirklich viel herausfinden. Daher haben wir uns entschlossen, den Quellcode des Programmes für euch anzufügen.

Also wie bereits beschrieben besteht das Programm aus weiteren unterschiedlichen verschachtelten Programmen (file_gui u. file_ob).

Diese sind im Dateianhang vorhanden.

Wir werden euch zeigen, an welcher Stelle wir womöglich ansetzen müssen, um dieses Problem des Einleseprozesses zu verbessern.

file_gui:

Der Einleseprozess beginnt in der Zeile 161 und endet in der Zeile 337 mit dem Befehl fclose(fipf) etc...;

Unser Problem ist folgendes:

Um nicht jedes Mal die kompletten Daten erneut einzulesen, wollen wir so was ähnliches wie einen Zeiger erstellen, der das Ende der alten Daten darstellt.

Diesen Zeiger wollen wir dafür benutzen, um zu wissen, ab wo die neuen Daten anfangen. Nur wie man diesen Zeiger in diesen Programmen implementiert und wie man darüberhinaus diese Daten graphisch einfach an den alten anfügt und fortlaufen lässt, darin liegt unser Problem.

Wichtig hierbei ist, dass die neuen Daten einfach nur an die alten Daten angefügt werden, sowohl in der Textdatei als auch in der graphischen Ausgabe,- also das die neuen Daten an den bereits existierenden Daten angehangen werden.

Sollten Fragen existieren, könntet ihr uns auch u.A. mit der ICQ_Nr. 283339639 erreichen. Alles weitere könnten wir dann darüber klären.

Vorab ein großes Dankeschön und wir hoffen, dass Ihr unser Problem halbwegs verstanden habt.

View_Net_ NEU.rar
 Beschreibung:
Entpackt diese Datei in einen Ordner und nehmt mit Matlab daruf Bezug.

Dann startet einfach mal file_ob (run) und klickt dann auf "start". Danach werden die Daten eingelesen. Nun stellt euch vor, es wäre eine große Datei, es könnte Tage dau

Download
 Dateiname:  View_Net_ NEU.rar
 Dateigröße:  1.04 MB
 Heruntergeladen:  596 mal
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.