Verfasst am: 26.10.2009, 14:26
Titel: Zwischenwerte für 5x5 Matrix interpolieren und dann surfc()
Hallo,
ich habe eine 5x5 Matrix mit werten gefüllt. Diese möchte ich gerne mittels surfc() anzeigen. Allerdings nicht nur die 25 Werte sondern mit einer Interpolation der Zwischenwerte...
habe spline() gefunden allerdings hatte damit keinen Erfolg...
Danke erstmal...
Aber leider reicht mein Matlab Wissen dafür noch nicht ganz aus...
Hab mir grad die einzelnen Befehler per Hilfe angeschaut aber ich kapierst dennoch nicht!
Hab's mal kopiert und ausgeführt... Sieht auch gut aus nur weiß ich echt nicht wie ich dies für mich anpassen kann. Und ich hätte gerne noch ein schwarzes Gitter auf der Oberfläche... Wie geht das?
Hast du vielleicht noch ne Erklärung für Dummys?
Nochmal mein Ausgangspunkt:
5x5 Matrix mit Werten gefüllt und diese sollen in einem Oberflächen-Diagramm mit interpolierten Zwischenwerten dargestellt werden.
bei Andreas ist Z die 5x5-Matrix, X2, Y2 das Gitter, auf das interpoliert wird, Z2 die Interpolierende und dann die Ausgabe.
Lass die letzte Zeile weg, und das schwarze Gitter bleibt wie vorher ...
Verstehe. Wenn man nur eine 5x5 Matrix hat sind das ja gewissermassen wir Z-Werte und die X- und Y Werte gehen jeweils von 1 bis 5. In den meisten Fällen liegt hinter X und Y ja eine physikalisch Bedeutung. Wenn es hier keine gibt, sondern einfach nur gezählt wird können die X und Y einfach mit
Ein paar Kleinigkeiten würde ich gerne noch verbessern:
1. Eine Legende auf der die entsprechenden Farben in werten umgerechnet werden.
2. Die Z-Achse ist nun in 0,5 bis 1,1 dargestellt. Kann ich anstelle dieser Zahlen auch Prozent, also 50 - 110 % haben?
3. Ich entnehme die Werte zwar eine 5x5 Matrix würde sie dennoch gern nicht in den Seitenverhältnissen 1:1 darstellen...
Wie mach ich das am besten?
4. Kann ich einen zweiten Plot in diesen machen, welcher allerdings nur mit einem schwarzen Gitter dargestellt wird? - Vermutlich mit colormap([0 0 0])
5. Kann ich auch irgendwie die draufsicht auf die 5x5 Matrix darstellen, wie contour allerdings nicht nur die Umrisse sondern in fließenden Farbverläufen dargestellt?
PS. Ich versuche es parallel weiter und wenn ich selbst auf die Lösung komme schreibe ich dies hier rein!
1. Geht LEGEND?
2. Nicht so einfach. Letztendlich durch Manipulation der XTICKLABEL (Y, Z)
3. AXIS Befehl
4. Mit HOLD arbeiten, das legt einen tweiten Plot dadrüber. Vielleicht einen MESH PLot?
5. Z.B. VIEW
Gerade die letzte Frage bringt mich auf einen Hinweis zur Effizienz bei Erstellung von speziellen Darstellungen. Erstaunlich wenige Nutzer kennen die Möglichkeiten die Dartstellungen interaktiv (z. B. PLOTTOOLS) so lange anzupassen bis es richtig ist und abschliessend einen MATLAB Code für diese Darstellungsart zu generieren: Menu File -> Generate M File
1. Hab mir grad mal schnell LEGEND angeschaut aber leider ohne Erfolg.
2. Hm ok dann ist egal wär ja nur schönheits-tuning...
3. Wie würde man denn den AXIS Befehl eingeben? Mit diesen XMIN XMAX usw. -Werten?
4. Ich habe es bereits mit dem HOLD ON gearbeitet (Ist das denn was anderes als HOLD?) aber irgendwie wird danach alles falsch dargestellt :-/
5. EDIT2: Das mit VIEW hab ich nun auch hinbekommen. Für interessierte: view(0,90);
-Kann man COLORBAR irgendwie beschriften??
EDIT
Ah das PLOTTOOL hat mir zwar nicht direkt weitergeholfen, hat mich aber auf den Befehl COLORBAR gebracht dieser funktioniert. (Somit ist 1. erledigt!)
EDIT3:
Kann man denn auch irgendwie die Skalierung der Z-Achse beeinflussen?
-Momentan mach Matlab dies ja automatisch, aber ich würde dies gerne selber bestimmen. Also den Start- und Endwert!
Allerdings sind dann die Konturen von surfc nicht mehr auf dem Grund des Koordinatensystems... Wie kann man dies wieder hin bekommen??
... zu 3. hab ich mittels daspect([3 4 0.3]); gelöst!!
So ich komm voran, wenn auch schleppend
wenn man hold on und -off davor eingibt sind die Konturen von surfc wieder am Grund des Koordinatensystems!
Nun noch offene Fragen:
1. Kann ich den COLORBAR beschriften?
2. Ich hab es nun geschafft den zweiten Plot in den Plot einzufügen, allerdings ist dieser nicht durchsichtig wie ich es mir gewünscht hatte.
Also es soll ein durchsichtiges Netzt bei dem nur die Gitterlinien zu sehen sind in den Farbigen Plot einfügen... Wie geht das?
3. Ich habe nun die Matrix mit 100 multipliziert damit die Werte der Z-Achse Prozent entsprechen und den Z-Wert in DASPECT, sowie ZLIM abgeändert. Aber nun sind die Konturen wieder zu hoch und nicht mehr auf dem Grund des Koordinatensystems... Hat mir jemand eine Lösung/Erklärung dafür?
2. Hab nun den Plot mittels MESH und HIDDEN eingefügt somit ist er auch durchsichtig. Nur hätte ich gerne die Linienfarbe nicht entsprechend der Z-Achsenhöhe sondern in Schwarz... Wie geht das? (Per colormap ist alles farbverändert!)
3. Hab ZLIM vor SURFC gesetzt und es geht
Zuletzt bearbeitet von eselhund am 27.10.2009, 18:07, insgesamt einmal bearbeitet
It is possible to add the text labels inside the colorbar on MATLAB.
Essentially, colorbar is just another axes in a figure window. So you can get the handle to the axes
associated to the colorbar, set it as a 'currentaxes' and then add an annotation text box on to it.
For example, the code below puts a text label 'TEST' on the colorbar.
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.