2012-07-29 13 views
9

Angenommen ich A eine Sammlung haben:Wie verwende ich Karten mit benutzerdefinierten Funktionen in Octave?

A = [0:6:100] 

Und ich habe eine Funktion fib (n):

function retval=fib(n) 
    g1=(1+5^.5)/2 
    g2=(1-5^.5)/2 
    retval=(1/5^.5)*(g1^n - g2^n) 
endfunction 

Ich beabsichtige, in der Lage sein fib anzuwenden (n) auf A, und speichern Sie es in einer Sammlung sagen B, wo B [i, j] ist (i, fib (i)), so kann ich plotten ich vs fib (i) und sehen Sie die Ergebnisse in einem Diagramm.

Bitte beraten Sie, wie ich Karte verwenden kann, um diese gewünschte Sammlung zu erhalten B.

Antwort

13

Sie können es wie folgt tun:

map(@fib, A) 

Die @fib in eine Funktion Griff macht. Beachten Sie, dass map ist veraltet ist, und Sie sollten arrayfun verwenden statt:

arrayfun(@fib, A) 
+1

Die 'arrayfun' hat es für mich (nach 3.6.2 Upgrade), habe ich nicht einmal das' 'verschieden installieren Paket benutze das (map benötigt es). Danke – nemesisfixx

+0

Und wenn Sie eine Funktion mit mehreren Eingabeparametern haben, verwenden Sie diese: 'arrayfun (@ (o) MyFunc (o, 5, 'up'), A)'. In diesem Beispiel mit zwei festen Parametern, einem Skalarwert "5" und einem String "Auf". – erik

Verwandte Themen