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