ich hatte mich ungenau ausgedrückt: Definitions- und Bildbereich der
Funktion f haben die gleiche Dimension. Dann ist Ihr Vorschlag mat
[[All,n]]=f[mat[[All,n]]]; die eleganteste Variante.
herzlichen Dank!
Martin Heimann
On Jan 16, 2006, at 10:57, Harald von Aschen wrote:
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
--------
Max-Planck-Institute for Biogeochemistry, PF 100164, D-07701 Jena,
Germany
Street Address: Beutenberg Campus, Hans-Knoell-Straße 10, D-07745 Jena
Office: +49-3641-57-6350/6301
SIP (VoIP): 1-747-617-6659
Mobile - (NEW): +49-172-360 6519
Home: +49-3641-618247
Fax.: +49-3641-57-7300
Email: martin.heimann@XXXXXXX.de
Web: http://www.bgc-jena.mpg.de/~martin.heimann