Verfasst am: 11.01.2015, 18:13
Titel: X, Y, Z mit surf darstellen
Hallo miteinander,
wie ihr schon mit bekommen habt bin ich nicht gerade der Schnellste vom verstehen der Programmierung
Ich habe eine CSV Datei in der ein Haufen Müll ist und meine Koordinaten X Y und Z.
Dank euch habe ich es geschafft die Koordinaten Halbwegs gut
aus der CSV Datei in Variablen (Matrix) zu exportieren.
jetzt würde ich das ganze gerne Grafisch darstellen.
AndyAndyAndy hat da schon einen schönen und für mich 1A Versuch gemacht
doch leider schnalle ich das nicht und bekomme das nicht hin.
hier ist der Beitrag von Ihm: << Hier >>
Ich arbeite in zwischen mit Matlab 2014B auf einem iMac.
Die Musterdatei habe ich hier angehängt (CSV als ZIP)
das ist der Code mit der ich die Koordinaten heraus löse.
ich bekomme aber die Fehlermeldung:
"Data dimensions must agree."
ich verstehe nur nicht wie das genau gemeint ist?
die Variablen X Y Z sind die Falsch angeordnet?
anstelle Horizontal Vertikal? oder wie muss ich das verstehen?
ich wies das ich nicht der Hellste bin auf dem Gebiet, doch Ihne euch schaffe ich das nicht
ach ja,
Y Werte die Werte für Rechts Links
Z Werte sind Höhenangaben
Y Werte definiert die Tiefe
wie muss ich denn die Daten nun aufbereiten?
muss ich da jetzt ein Neue Variable erstellen?
XYZ = X, Y, Z
und das so das alle Punkte immer zusammen sind? die zusammen gehören? oder wie muss ich mir das vorstellen?
wenn das so in der Art aussehen würde wäre das genial:
EDIT: Ok einen der vielen Fehler habe ich gefunden,
ich habe bei den Y Werten einen zu wenig eingelesen klar dann stimmt die Anzahl nicht !!!!
im Code Zeile 16 dort ist das "-1" das habe ich raus genommen,
jetzt kommt kein Fehler mehr
doch das sieht grausig aus was ich anzeige
bei AndyAndyAndy sieht das viel besser aus,
weshalb?
ist das so weil ich zu viel auf einmal anzeigen möchte?
der header ist sehr schlecht. das macht das debuggen unmöglich... und das sollte man nicht machen.
zu deinem plot. mehr punkte plotten als dein bildschirm auflösung hat ist meist unnötig. darum habe ich das auch oben eingekürzt
grüße winkow
_________________
geht eigendlich wenn man ein wenig an der sicht rumspielt
das ist mal genial, Danke,
jetzt muss ich mich dran machen deinen Code zu verstehen
das dauert noch eine Weile, habe für den Oberen teil schon etwas Sejr lange gebraucht.
der header ist sehr schlecht. das macht das debuggen unmöglich... und das sollte man nicht machen.
zu deinem plot. mehr punkte plotten als dein bildschirm auflösung hat ist meist unnötig. darum habe ich das auch oben eingekürzt
grüße winkow
Öm wie meinst du das?
ich dachte so Lösche ich zu beginn erst mal alles und wenn dann Fehler aufkommen dann bekomme ich die angezeigt etc.
_________________
--
Anfänger, habe noch nie mit so was gearbeitet.
bitte um Verständnis.
ich dachte so Lösche ich zu beginn erst mal alles und wenn dann Fehler aufkommen dann bekomme ich die angezeigt etc.
jup alles. auch die debug marken.
das ist doch dann nichts Schlechtes? oder?
wenn ich vor Programm Start alles Lösche, denn dann bekomme ich nur die Fehler angezeigt die das Programm hat?
_________________
--
Anfänger, habe noch nie mit so was gearbeitet.
bitte um Verständnis.
doch ^^ sonst hätte ich dich ja nicht drauf hingewiesen . wie gesagt. du kannst keine debug markierungen setzen wenn du clear all benutzt. das erschwert das debuggen ungemein und alles was das debuggen erschwert sollte man sich abgewöhnen.
_________________
OK, ich schmeiße den teil wider raus *danke für den hinwies*
Jetzt aber mal kurz zu den Daten, also mit deinem Code komme ich noch nicht ganz klar, las mich aber mal eine Zwischen Frage Stellen,
meine Y Daten haben ja nur eine Horizontale reihe an Werten
meine X Daten haben ja nur eine Vertikale Reihe an Werte
du hast jetzt die X & Y Daten erst mal wie die Z Daten aufgebaut,
sprich die Y Horizontale reihe Vertikal nach unten Kopiert
sprich die X Vertikale Reihe Horizontal nach rechts Kopiert
so das Jeder Z Wert den X und Y wert wider hat?
das kann ich gemeindlich auch schon Oben machen?
denn ich möchte mit den Daten ja noch was Rechnen.
einen Ausschnitt kann ich dann auch bei der Visualisierung selbst dann noch auswählen?
nur das ich das Grundprinzip schon mal richtig verstanden habe?
_________________
--
Anfänger, habe noch nie mit so was gearbeitet.
bitte um Verständnis.
das kann ich gemeindlich auch schon Oben machen?
denn ich möchte mit den Daten ja noch was Rechnen.
was hällt dich davon ab mit den werten zu rechnen ?
meshgrid macht das von dir beschriebene. damit man eine zuordnung von z zu x und y werten hat. ich hab das gemacht damit es einfacher ist mit den werten zu rechnen. mesh würde das sonst auch alleine intern machen falls das nicht vorher gemacht wurde. sihe dazu auch die doc von mesh bzw meshgrid
Zitat:
einen Ausschnitt kann ich dann auch bei der Visualisierung selbst dann noch auswählen?
ja kann man schon. ist aber einfacher wenn man gleich nur seinen ausschnitt plottet. da sonst unnötig daten geplottet werden die du eh nicht sehen kannst. das macht das ganze etwas unhandlich. ich hab oben bereits nur jeden 3. datenpunkt entlang der x achse genommen und auch nur ein drittel des bauteils. wenn du alles plottest siht es erstmal nicht gut aus und 2. ist es sehr langsam zu rotieren etc. er verschiebt ja dann punkte die du eh nicht sehen kannst das deine auflösung vom bildschirm kleiner ist als die anzahl der punkte die du plottest.
_________________
das kann ich gemeindlich auch schon Oben machen?
denn ich möchte mit den Daten ja noch was Rechnen.
was hällt dich davon ab mit den werten zu rechnen ?
bis jetzt nihcts nur die Tatsache das ich noch nicht dahinter gekommen bin wie das geht , kommt heute Nacht hoffentlich noch, ... werde nciht locker lassen.
Winkow hat Folgendes geschrieben:
Zitat:
einen Ausschnitt kann ich dann auch bei der Visualisierung selbst dann noch auswählen?
ja kann man schon. ist aber einfacher wenn man gleich nur seinen ausschnitt plottet. da sonst unnötig daten geplottet werden die du eh nicht sehen kannst. das macht das ganze etwas unhandlich. ich hab oben bereits nur jeden 3. datenpunkt entlang der x achse genommen und auch nur ein drittel des bauteils. wenn du alles plottest siht es erstmal nicht gut aus und 2. ist es sehr langsam zu rotieren etc. er verschiebt ja dann punkte die du eh nicht sehen kannst das deine auflösung vom bildschirm kleiner ist als die anzahl der punkte die du plottest.
da haben wir glaube ich aneinander vorbei geredet.
ich dachte das Aufbereiten der Daten, also X Y auf die Größe von Z vorbereiten, mit Auswahl meinte ich dann, das ich dann aus den schon vollständig aufbereiteten Daten einen teil heraus nehmen kann um denn dann anzuzeigen.
oder liege ich jetzt Falsch?
denn wenn ich alle Daten schon richtig Formatiert habe sprich X Y Z
dann könnte ich damit Berechnungen Durchführen etc.
und mir aber nur 10 Z Werte ausgeben lassen
Was ich noch Fragen wollte ist es Möglich jeden einzelnen Punkt auch eine Farbe mit zu geben?
z.B. Color_XYZ = RGB(10,20,100) oder so was?
denn wenn ich dann was berechne und bestimmte Punkte Identifiziere könnte ich die in einer andern Farbe hinterlegen lassen
Ja dann geht der Farbverlauf von Dunkel zu Hell verloren was ich aber glaube ich nicht so schlimm finden würde. *Glaube ich*
oder noch besser, wenn keine Farbe hinterlegt ist dann soll der Punkt sich an den "colormap" halten und wenn eine Farbe angegeben ist dann soll er in der Farbe dargestellt werden, ist so was Möglich?
_________________
--
Anfänger, habe noch nie mit so was gearbeitet.
bitte um Verständnis.
ich dachte das Aufbereiten der Daten, also X Y auf die Größe von Z vorbereiten, mit Auswahl meinte ich dann, das ich dann aus den schon vollständig aufbereiteten Daten einen teil heraus nehmen kann um denn dann anzuzeigen.
oder liege ich jetzt Falsch?
denn wenn ich alle Daten schon richtig Formatiert habe sprich X Y Z
dann könnte ich damit Berechnungen Durchführen etc.
und mir aber nur 10 Z Werte ausgeben lassen
ja dann beschrenkst du das nicht bei meshgrid sondern erst später
farbig machen kann man das auch dazu guckst du am besten in die docu. ich hab das mal mit collormap('bone') gemacht damit es so ählich wie dein bild aussiht. man kann die farben auch einstellen wie in den surface proerties. oder man kann einzelne punkte einfach mit plot3 markieren
ich glaube es ja nicht, ... das scheint so leicht zu sein, ...
und ich breche mir hier einen ab und überlege wie das geht das ich die Y
werte Kopien kann, ...
ich glaube ich habe das aber jetzt verstanden.
wenn
also Wählst du nur den Teil von Links nach rechts 100 bis 300
und von Oben nach unten 500 bis 1500
aus.
und das wird dann angezeigt.
Da die Farbe jetzt nicht so veränderbar ist bzw. dann wahrscheinlich auch nicht richtig zu sehen wäre bei einem Punkt, ist das "plot3" da,
somit wenn cih was Berechne und einen Punkt farbig darstellen möchte dann Speicher ich denn in ein Extra Array Color_Darstellung(X, Y, Z) das ich dann durchlaufen lassen kann um die Punkte mir darzustellen.
Das ist Gut, eigentlich schon Perfekt.
Jetzt muss ich das für mich noch so machen das ich nicht immer einen Schrecken bekomme wenn ich den Code aufrufe, dann muss ich mir überlegen wie und was ich berechnen möchte.
Du bist mein "Tagesheld" DANKE.
deinen Code werde ich noch ein wenig durcharbeiten müssen und nachschlagen müssen das ich das alles verstehe und halbwegs anwenden kann.
Danke.
Ich komme wider, keine Frage, ..
du hast in Zeile:
Code:
Z = Samlung_x_z(1:end, 2:end)'; % transponieren eingefügt
das ' eingefügt
und das Kommentar, jedoch sagt mir beides nichts
was ist das?
*bin kein gelehrter (*
was der operator macht kannst du in der doc nachlesen. was transponieren ist kann man zur not auch googlen falls man das nicht weis
hintergrund ist das dein x die dimension n hat und y die dimension m meshgrid macht daraus eine mxn matrix dein z hast du aber in der form nxm angeordnet. das musste ich korrigieren.
_________________
das ' eingefügt
und das Kommentar, jedoch sagt mir beides nichts
was ist das?
*bin kein gelehrter (*
was der operator macht kannst du in der doc nachlesen. was transponieren ist kann man zur not auch googlen falls man das nicht weis
hintergrund ist das dein x die dimension n hat und y die dimension m meshgrid macht daraus eine mxn matrix dein z hast du aber in der form nxm angeordnet. das musste ich korrigieren.
Ah du vertauschst so n & m in der Position so das es wider stimmt.
Raffiniert.
Irgend wie hat das mit normalen programmiertechnischen nichts zu tun
alles etwas verwirrend.
Danke.
_________________
--
Anfänger, habe noch nie mit so was gearbeitet.
bitte um Verständnis.
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.