2012-07-29 5 views
9

Si supponga Ho una collezione A:Come si usa la mappa con la funzione personalizzata in Octave?

A = [0:6:100] 

e ho un fib funzione (n):

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

ho intenzione di essere in grado di applicare fib (n) su A e memorizzarlo in una raccolta dire B, dove B [i, j] è (i, fib (i)), in modo da poter tracciare i vs fib (i) e vedere i risultati su un grafico.

Si prega di avvisare su come posso usare mappa per ottenere questo desiderato collezione B.

risposta

13

Si può fare in questo modo:

map(@fib, A) 

Il @ fa fib in un manico di funzione. Si noti che map è in fase di deprecato e si dovrebbe usare arrayfun invece:

arrayfun(@fib, A) 
+1

Il 'arrayfun' ha fatto per me (dopo l'aggiornamento a 3.6.2), non ho dovuto installare anche il pacchetto' 'per varie usa questo ('map' lo richiede). Grazie – nemesisfixx

+0

E se hai una funzione con diversi parametri di input usa questo: 'arrayfun (@ (o) MyFunc (o, 5, 'su'), A)'. In questo esempio con due parametri fissi, un valore scalare '5' e una stringa' 'up''. – erik

Problemi correlati