Verfasst am: 15.03.2012, 11:09
Titel: 3D-Daten auslesen und anschließend plotten (2D und 3D)
Hallo,
ich habe ein größeres Projekt, in welchem es darum geht mehrere Daten aus einem Ordner auszulesen, die jeweils 3D-Daten enthalten.
Die Dateien unterscheiden sich in ihrem Zeitpunkt der Aufnahme, ansonsten sind sie in ihrer Struktur identisch. Exemplarisch habe ich mal eine solche Datei angehängt (real sind sie wesentlich größer).
Der Zeitmarker befindet sich in der zweiten Zeile (7ter Wert).
In der ersten Spalte (ab Zeile 4) befinden sich die zugehörigen x-Werte, in der dritten Zeile (ab Spalte 2) die y-Werte und eingeschlossen davon die z-Werte. Das ist auch gleich mein erstes Problem, da die Struktur eben nicht ist:
x1 y1 z1
x2 y2 z2
usw.
Nun möchte ich zum einen 2D-Daten für festes/ausgewähltes y (also x gegen z) sowie 3D-Daten (x,y,z) plotten. In beiden Fällen soll noch ausgewählt werden können zu welcher Zeit (also weleche Datei Verwendung findet). Idealweise ist es mein Ziel das alles in einer Gui zu realisieren. Aber das simple Auslesen der Daten hat erst einmal Vorrang.
Wäre super, wenn mir da jmd. einen Tipp geben könnte, wie ich die Daten richtig einlese, sodass ich sie anschließend plotten kann.
fid = fopen('test123.txt');
for I = 1:3% gehe zur 3. Zeile
l = fgetl(fid);
end
y = textscan(l, '%f');
y = y{1}(2:end);
data = textscan(fid, repmat('%f', 1, numel(y) + 1), 'CollectOutput', true);
x = data{1}(:,1);
Z = data{1}(:,2:end);
fclose(fid);
tausend Dank dir, klappt echt super (auch mit den Originaldaten)!
Erster Schritt soweit geschafft, puh!
Eine Frage hätte ich hierzu noch. Mittels axis kann ich ja die Achsen festlegen,
was auch soweit funktioniert. Allerdings hätte ich gerne, dass mein Plot auch an den Achsengrenzen abgeschnitten wird und nicht darüber "hinausläuft".
Ist das soweit möglich?
gerne! Beispielsweise ist mein Wertebereich der Daten (x-Achse) 200-400, was dann entsprechend geplottet wird. Nun ist aber der Bereich 200-250 Schrott, sodass ich gerne nur 250-400 zeichnen würde. In den Achseneinstellungen kann ich dann mein Koordinatensystem entsprechend beschränken, aber die Daten werden dennoch über das Koordinatensystem hinweg geplottet. Genau das würde ich gerne vermeiden. Die Achse soll also gleichzeitig den Definitionsbereich der Daten angeben.
und dann sieht man das "Hinauslaufen" des Plots.
Manuelle indizierung hatte ich mir auch überlegt. Liese die sich auch flexibel gestalten, also dass man über Regler in der Gui den Bereich festlegt?
Probleme könnte es dann höchstens noch mit den z-Werten geben.
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.