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

3D-Daten auslesen und anschließend plotten (2D und 3D)

 

spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 11:09     Titel: 3D-Daten auslesen und anschließend plotten (2D und 3D)
  Antworten mit Zitat      
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.

Viele Dank
Johannes

test1.txt
 Beschreibung:

Download
 Dateiname:  test1.txt
 Dateigröße:  271 Bytes
 Heruntergeladen:  458 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 11:29     Titel:
  Antworten mit Zitat      
Hallo,

erster Beispiel-Code:

Code:
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);

surf(y,x,Z)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 12:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

tausend Dank dir, klappt echt super (auch mit den Originaldaten)!
Erster Schritt soweit geschafft, puh! Smile
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 12:26     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Allerdings hätte ich gerne, dass mein Plot auch an den Achsengrenzen abgeschnitten wird und nicht darüber "hinausläuft".


Kannst du das näher erklären?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 12:38     Titel:
  Antworten mit Zitat      
Hallo,

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.

Gruß
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 12:40     Titel:
  Antworten mit Zitat      
Hallo,

mich wundert jetzt, dass der Plot nicht automatisch abgeschnitten wird. Hast du dafür ein lauffähiges Beispiel?

Händisch kannst du das mit logischer Indizierung (logical indexing) selbst machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 12:48     Titel:
  Antworten mit Zitat      
Hallo,

füge an das oben genannte Beispiel einfach folgenden Code an:
Code:
axis([6 10 201 205 0 0.5])

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?

Gruß
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 13:36     Titel:
  Antworten mit Zitat      
Hallo,

ich kann da kein Problem feststellen. Mit welchem Release arbeitest du?

Ja, du könntest den Bereich über die GUI einstellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

ich arbeite mit der 2011b-Version. Habe den Plot auch mal als jpeg exportiert, damit du es nachverfolgen kannst.

Gruß und Danke
Johannes

3-d plot.jpg
 Beschreibung:

Download
 Dateiname:  3-d plot.jpg
 Dateigröße:  31.44 KB
 Heruntergeladen:  738 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 14:57     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte das erst übersehen; beim Drehen wird es deutlicher.

Eine Lösung wäre so:
Code:
surf(y(y>=6 & y <= 10),x(x>=201 & x<=205),Z(x>=201 & x<=205, y>=6 & y <= 10))  
axis([6 10 201 205 0 0.5])  


Probleme könnte es dann höchstens noch mit den z-Werten geben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.