matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenMathematicaDarstellung import. Arrays
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Mathematica" - Darstellung import. Arrays
Darstellung import. Arrays < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Darstellung import. Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:07 So 06.06.2010
Autor: melvinj

Hallo,

ich muss zwei importierte Arrays in einem 3D Plot Diagramm darstellen. Hierbei soll das erste Array die normale 3D Oberfläche darstellen und zweite Matrix als Farbimage aufgelegt sein. Beide Arrays haben dieselben Dimensionen (z.B. 128x128 Bildpunkte), enthalten Fließkommazahlen und wurden mit einem Rasterkraftmikroskop aufgenommen. Die erste Matrix enthält die Höheninformationen der untersuchten Probe. Die zweite Matrix andere phys. Eigenschaften.
Mein eigentliches Problem liegt lediglich darin, die zweite Matrix farbcodiert auf die Oberflächenkonturen der ersten aufzulegen. Leider konnte ich diese Aufgabe noch nicht realisieren. Auch der "Colofunction" Befehl der Plot3D Funktion scheint da nicht weiter zu helfen.

Vielen Dank für Eure Hilfe

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Darstellung import. Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 10:20 Mo 07.06.2010
Autor: halirutan

Moin,

doch, die ColorFunction Option hilft dir weiter. Nehmen wir doch mal ein Beispiel und erzeugen uns eine Matrix mit Hoehenwerten und eine fuer die Farbgebung. In diesem Fall soll die Farbe die Richtung des Gradienten codieren:

1: f = Cos[x^2 + y^2] + 0.2 Sin[3 x];
2: {dfdx, dfdy} = D[f, #] & /@ {x, y};
3: {heights, col} = 
4:   Transpose[
5:    Table[{f, ArcTan[dfdx, dfdy]}, {y, -1, 1, 2/127.}, {x, -1, 1, 
6:      2/127.}], {3, 2, 1}];
7: {ListPlot3D[heights], ArrayPlot[col, ColorFunction -> Hue]}


[Dateianhang nicht öffentlich]

[Dateianhang nicht öffentlich]

Nun macht man Folgendes: zuerst interpoliert man die Matrix der Farbwerte, damit man die Werte an beliebigen (nicht notwendigerweise ganzahligen) Positionen abrufen kann. Dann musst du dir ueberlegen, wie du aus diesem einen Farbwert auch wirklich eine Farbe bekommst. Dazu koenntest du die "Gradients" der ColorData Funktion nehmen. Ich benutze hier mal nur den Farbwinkel des Hue-Farbraumes.

1:
2: colf = ListInterpolation[col];
3: ListPlot3D[heights, 
4:  ColorFunction -> Function[{x, y, z}, Hue[(colf[y, x] + Pi)/(2 Pi)]], 
5:  ColorFunctionScaling -> False]


[Dateianhang nicht öffentlich]

Aequivalentes Vorgehen sollten jetzt mit deinen Werten moeglich sein. Vielleicht noch 2 Tips, um allzu grosse Frustration zu verhindern:

- der Winkel des Gradienten ist durch den ArcTan immer im Intervall [-Pi,Pi] und muss zuerst auf das Intervall [0,1] gebracht werden, um ihn mit Hue zu benutzen. Bei den ColorData Gradienten ist das noch wichtiger; die wuerden den Wertebereich ausserhalb einfach abschneiden und du erhaelst unerwartete Ergebnisse.
- ColorFunction benutzt immer skalierte [0,1] Werte. Das ist, gerade wenns um die x und y Werte geht nicht immer gewuenscht und muss deshalb mit ColorFunctionScaling->False abgeschaltet werden.

Cheers
Patrick

Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Anhang Nr. 2 (Typ: png) [nicht öffentlich]
Anhang Nr. 3 (Typ: png) [nicht öffentlich]
Bezug
                
Bezug
Darstellung import. Arrays: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:19 Mo 07.06.2010
Autor: melvinj

Vielen Dank für Deine Hilfe.

Ich glaube, so wird es funktionieren :-)

lg
melvinj

Bezug
                        
Bezug
Darstellung import. Arrays: Probleme bei Umsetzung
Status: (Frage) beantwortet Status 
Datum: 20:01 Mo 07.06.2010
Autor: melvinj

Hallo nochmal,

prinzipiell verstehe ich den Ansatz Deiner Hilfe. Mein Problem liegt jedoch darin, dass ich wohl zu dumm bin Deine Hilfe umzusetzen :-/

Wie bereits erwähnt, importiere ich quadratische Matratizen aus *.xls Files in Mathematica ein. Das erste Problem betrifft bereits die Darstellung der importierten Matrix mittels "ArrayPlot". Das macht die Funktion schlicht und einfach nicht. Es wird lediglich eine rote Linie geplottet?! Verwende ich die Funktion "ListDensityPlot", dann wird die Matrix korrekt dargestellt.

Das zweite Problem bezieht sich auf den Befehl "ListInterpolate[...]". Hier kommt stets die Fehlermeldung "Requested order is too high; order has been reduced to {0,3,3}." Ich schätze das hängt irgendwie mit der Dimension der Matrix zusammen. Versucht man die "InterpolationOrder" zu reduzieren, meldet Mathematica trotzdem Fehler, sofern man sie nicht manuell gleich 0 setzt.

Wenn ich anschließend versuche diese Matrix als ColorPlot in die ListPlot3D einzubinden (also so wie in Deinem Beispiel), dann hängt sich Mathematica auf. Vielleicht ist das eine Folge der misslungenen Interpolation. Vielleicht müsste ich die importierte Matrix zunächst irgendwie redimensionieren um die Fehlermeldungen zu vermeiden?

Nach dem importieren renormiere ich zunächst die Daten der Matrix so, dass nur noch Werte zwischen 0 und 1 vorkommen, sodass die Matrix kompatibel mit der Hue Operation sein müsste.

Vielleicht könntest Du mal selbst probieren zwei 128x128 Excel Tabellen mittels:

ColorMatrix = ToFileName["DateiPfad", "Matrix1.xls"];
HeightMatrix = ToFileName["DateiPfad", "Matrix2.xls"];

ColorArray = Import[ColorMatrix];
HeightArray = Import[HeightMatrixMatrix];

zu importieren um dann die Colormatrix im ListPlot3D als Colorsurface auf die Heightmatrix zu legen? Vielleicht finde ich auch selbst noch den Fehler.

Vielen Dank für Deine Hilfe.

lg
melvinj

Bezug
                                
Bezug
Darstellung import. Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 11:00 Di 08.06.2010
Autor: halirutan

Moin,

wenn du

Dimensions[ColorMatrix]
And @@ (NumericQ /@ Flatten[ColorMatrix])

machst, muesste

{128, 128}
True

rauskommen. Das muesste auch bei der HeightMatrix das Ergebnis sein.
Macht es das?

Cheers
Patrick

Bezug
                                        
Bezug
Darstellung import. Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:10 Di 08.06.2010
Autor: melvinj

Hallo,

danke für Deine Antwort.
Als OutPut kommt heraus:  "{True, 128True,128True}"

Die Darstellung der beiden Matrizen, entsprechend Deiner Hilfe, habe ich jetzt trotzdem hinbekommen.
Das Problem liegt darin, dass die importierten Matrizen eine äußere geschweifte Klammer zuviel aufweisen, also: {{{...},{...},...}}. Die äußersten Klammern sind überflüssig und hatten die Probleme verursacht. Wenn ich diese entferne funktioniert sowohl ArrayPlot als auch Interpolation und das Colormap Overlay im ListPlot3D.

Jetzt müsste ich nur wissen, wie man diese Klammern automatisiert gleich nach dem Import herausfiltern kann, damit eine manuelle Korrektur nicht notwendig ist. Da die Matrizen später noch größer werden und die Datenmaps schnell verarbeitet werden sollen, wäre die manuelle Korrektur etwas hinderlich.
Vielleicht sollte man aber schon beim Import selbst ansetzen. Ich könnte die Matrizen auch aus *.txt Files einlesen oder statt Matrizen nur eine fortlaufende Liste importieren, die dann in Mathematica automatisiert zur Matrix formatiert wird?! Geht das, oder hättest Du eine bessere Idee?

Danke für Deine Hilfe. Wenn dieses letzte Problem gelöst ist, das wäre ich dann vollends zufrieden :-)

Viele Grüße



Bezug
                                                
Bezug
Darstellung import. Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 17:38 Di 08.06.2010
Autor: halirutan

Moin,

wenn dem so ist, wie du sagst, dann sollte

data=First@Import[....]

funktionieren.

Cheers
Patrick

Bezug
                                                        
Bezug
Darstellung import. Arrays: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:11 Di 08.06.2010
Autor: melvinj

Jo,

genauso so ist es :-)

Vielen Dank nochmal für Deine Unterstützung

Viele Grüße

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]