DMUG-Archiv 2006

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: kleine Frage zu Map[]

At 23:37 15.01.06 +0100, Martin Heimann wrote:

Hallo!

ich möchte eine Funktion f[z_List] welche als Argument eine 1-d Liste nimmt auf die n-te Spalte einer Matrix M anwenden, die anderen Spalten jedoch unverändert lassen. Ich kann natürlich die n-te Spalte extrahieren, die Funktion darauf anwenden und dann die Matrix wieder zusammensetzen. Aber geht dies nicht irgendwie mit Map eleganter?

Transformieren Sie die Matrix, so dass die Spalten zu Zeilen werden, und arbeiten Sie mit MapAt, Beispiel:

(mat = Array[x, {4, 8}])//MatrixForm
(* MapAt[f,Transpose[mat],n], z.B. n = 3. Spalte *)
MapAt[f,Transpose[mat],3]

Was Sie allerdings meinen mit Zusammensetzen, das verstehe ich nicht. Um wieder eine Matrix zu erhalten, muss f:D^d -> R^d (D= Definitionsbereich und R = Bildbereich) sein, sonst erhalten Sie in der n-ten Zeile die Anzahl der Werte, die f "ausspuckt".

Hat Definitionsbereich und Bildbereich von f die gleiche Dimension, geht auch
mat[[All,n]]=f[mat[[All,n]]];
sonst wird halt in jede Zeilenposition der Spalte n der gleiche Wert von f dieser Spalte gesetzt.

Mit freundlichen Gruessen
Harald v. Aschen


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html