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

Zwischenwerte für 5x5 Matrix interpolieren und dann surfc()

 

eselhund
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2009, 14:26     Titel: Zwischenwerte für 5x5 Matrix interpolieren und dann surfc()
  Antworten mit Zitat      
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...


Hoffe ihr habt mir einen Tipp!!
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 26.10.2009, 14:44     Titel:
  Antworten mit Zitat      
Ich tippe mal das ist der Ausgangspunkt und die grafische Interpolation reicht nicht:

Code:

[X,Y,Z] = peaks(5);
surfc(X,Y,Z)
shading interp
 


Dann kann man mit MESHGRID und GRIDDATA die Daten vorverarbeiten:

Code:

[X,Y,Z] = peaks(5);
[X2,Y2] = meshgrid(-3:0.1:3,-3:0.1:3);
Z2=griddata(X,Y,Z,X2,Y2,'cubic');
surfc(X2,Y2,Z2)
shading interp
 


Andreas
[/code]
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2009, 16:54     Titel:
  Antworten mit Zitat      
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? Very Happy

Nochmal mein Ausgangspunkt:

5x5 Matrix mit Werten gefüllt und diese sollen in einem Oberflächen-Diagramm mit interpolierten Zwischenwerten dargestellt werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 26.10.2009, 16:58     Titel:
  Antworten mit Zitat      
Hallo,

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 ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2009, 17:08     Titel:
  Antworten mit Zitat      
OK das mit dem schwarzen Gitter hab ich schonmal kapiert Smile
Ergänzend kann man hier auch mittels colormap verschiedene Farbvarianten anwählen...


Allerdings hab ich immer noch nicht kapiert was dieser peak-Befehl macht?

Und ist der unterschied zwischen der ersten und für was der zweiten Lösung?

Aber ich kapier einfach nicht wie das funktioniert...

Wieso denn X,Y,Z... Wenn ich doch nur eine 5x5 Matrix habe???

Zumal ja X,Y, und Z auch jeweils 5x5 Matrizen sind nur kapier ich nciht wie die befüllt werden...

Meshgrid kapier ich so halb ...

Griddata ist soviel ich das verstanden hab für die interpolation zuständig.


Wäre echt super wenn mir das jemand etwas ausführlicher erklären würde Exclamation
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 26.10.2009, 18:20     Titel:
  Antworten mit Zitat      
PEAKS ist nur ein Musterdatensatz (siehe HELP PEAKS). Der ist dann sinnvoll wenn die Daten das Anwenders unbekannt sind, aber RAND nicht nützlich ist.

MESHGRID spannt eine neueres, feineres Netz auf. GRIDDATA füllt es durch Interpolation.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2009, 22:07     Titel:
  Antworten mit Zitat      
...Ja sowas dachte ich mir schon!

Die Matlab-Hilfe kenn ich nur hatte ich das irgendwie falsch verstanden...


Aber mittels PEAKS werden ja 3 5x5 Matrizen befüllt...

Ich hab aber nur eine 5x5 Matrix - Wie geht das damit?

Hab schon viel ausprobiert aber ich bekomm's einfach nicht hin...

Genau das mit den 3 Matrizen irritiert mich auch am GRIDDATA Befehl Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.10.2009, 09:46     Titel:
  Antworten mit Zitat      
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
Code:

[X,Y] = meshgrid(1:5,1:5);
 

nachgebildet werden.
Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 10:33     Titel:
  Antworten mit Zitat      
Erstmal viiieeeelen Dank!

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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.10.2009, 10:39     Titel:
  Antworten mit Zitat      
Ich glaube es geht alles bis auf 2. sehr einfach:

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

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.10.2009, 10:42     Titel:
  Antworten mit Zitat      
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

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 10:51     Titel:
  Antworten mit Zitat      
Danke für die superschnelle Antwort!!

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!
Private Nachricht senden Benutzer-Profile anzeigen
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 15:47     Titel:
  Antworten mit Zitat      
... zu EDIT3:

ZLIM

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 Smile

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?
Private Nachricht senden Benutzer-Profile anzeigen
 
eselhund
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 20.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2009, 17:51     Titel:
  Antworten mit Zitat      
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 Wink

Zuletzt bearbeitet von eselhund am 27.10.2009, 18:07, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.10.2009, 18:05     Titel:
  Antworten mit Zitat      
Ich habe das hier gefunden:

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.
Code:

plot(1:10)
colorbar
get(gcf,'axes')
get(gcf,'Children')
ha = get(gcf,'Children')
get(ha,'tag')

%ha(1) has the tag as colorbar so set ha(1) as the current axis
set(gcf,'CurrentAxes',ha(1))
text(0.5,20,'TEST')
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.