|
|
Variables Einlesen von dat-Dateien in Vektoren |
|
Torsten87 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.06.2010, 18:20
Titel: Variables Einlesen von dat-Dateien in Vektoren
|
 |
|
 |
|
Hallo,
ich möchte verschiedene Variable dat Dateien einlesen, wobei ich folgendes Problem habe.
Zuerst einmal einen kurzen Überblick über eine Beispieldatei.
Text
Text A1 - A2 - A3 - A4 (Name der Variablen)
Text
687.54 6874.46 6547.46 6874.54
656.54 6575.54 6547.54 6475.45
...
Aus diesen Datein würde ich gerne Vektoren herstellen, um mit ihnen weiter in Matlab arbeiten zu können.
Folgende Probleme:
- Die Anzahl der gemessenen Variablen ist je nach Versuch unterschiedlich
- Die Versuchsdurchführung liegt in der Vergangenheit, es ist also keine andere Ausgabe möglich
Eine Idee der ich nachgegangen bin:
Ich lese die Zahlendaten durch mehr %n ein als meine längste Datei hat, so dass auf jedenfalls alle Daten eingelesen sind.
G=textscan(fid,'%n %n %n ....);
Davor wollte ich die Variablen so einlesen, dass man auf die einzelnen Variablen zugreifen kann um sie später in der richtigen Reihenfolge per Schleife mit den Zahlendaten zu verknüfen. Hier fehlen mir allerdings die richtigen Befehle.
Falls es auch eine einfachere Lösung gibt, dann könnt ihr mich auch gerne von meinem Holzweg abbringen.
Vielen Dank im Vorraus
Mfg Torsten
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.06.2010, 20:27
Titel:
|
 |
Hallo,
ich würde es so versuchen: mit fgetl die zweite Zeile einlesen (z2).
Dann mit
nnz(z2 == '-')
die Anzahl (n) der - [bzw. der Trennzeichen] zählen. Anzahl der Variablen ist n+1.
Dann mit
den Formatstring erstellen.
Grüße,
Harald
|
|
|
Torsten87 |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 03.06.10
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: R2009a
|
 |
|
|
 |
|
Verfasst am: 04.06.2010, 10:57
Titel:
|
 |
|
 |
|
Vielen Dank für deine Antwort.
Ich habe es allerdings etwas anders gelöst, da Matlab mir bei fgetl nur errors ausgespuckt hat.
Lösung: (mit erneuter Frage)
...
g = textscan(fid,'%s',1,'delimiter','\n'); % Eingelesen Zeile
...
U=textscan(fid,'%n %n .........'); Einlesen Messwerte
%Umbau der im String eingelesenen Messwerte zu Vektoren / Matrizen
s = [];
remain = strrep(g{1},' - ', ' '); %löschen der Bindestriche
while strcmp(remain,'') == 0 %Zuweisung per S. zu einem V.
[token, remain] = strtok(remain);
s = [s,token];
end
% Bis hier funktioniert alles, ich habe die Matrix s in der alle Variablen stehen und ich habe U in der alle Daten stehen
%weiterer Vorgang ->Zuweisung
%Ziel x-Variablen die bei Aufruf die ihnen zugewiesenen Werte ausgeben
%Jede Variable hat zusätzlich eine Zeitkomponente, dem einzelnen Wert zugewiesen ist. Bsp: A1=(x,2)
l=size(s);
a=l(1,2);
a=a*2+4; %die ersten vier Werte sind unwichtig
i=1;
b=5;
while i<=a;
s{i}=(U{b},U(b+1)); %Die Zuweisung ist falsch, ich weis es aber nicht besser
b=b+2;
i=i+1;
end
Wie könnte ich die Zuweisung so gestalten, dass die Variablen wirklich deklariert werden?
Grüße Torsten
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|