2012-07-29 29 views
9

Giả sử tôi có một bộ sưu tập Một:Làm cách nào để sử dụng bản đồ với chức năng tùy chỉnh trong Octave?

A = [0:6:100] 

Và tôi có một hàm 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 

tôi dự định để có thể áp dụng fib (n) trên A và lưu trữ trong bộ sưu tập là B, trong đó B [i, j](i, fib (i)), vì vậy tôi có thể lô i vs fib (i) và xem kết quả trên biểu đồ.

Vui lòng thông báo về cách tôi có thể sử dụng bản đồ để nhận bộ sưu tập mong muốn này B.

Trả lời

13

Bạn có thể làm điều đó như thế này:

map(@fib, A) 

Các @ làm fib vào một chức năng xử lý. Lưu ý rằng map đang bị phản đối và bạn nên sử dụng arrayfun thay vì:

arrayfun(@fib, A) 
+1

Lệnh 'arrayfun' đã làm nó cho tôi (sau khi nâng cấp lên 3.6.2), tôi không phải thậm chí cài đặt linh tinh 'gói' để sử dụng điều này ('map' yêu cầu nó). Cảm ơn – nemesisfixx

+0

Và nếu bạn có một hàm với một số tham số đầu vào, hãy sử dụng hàm này: 'arrayfun (@ (o) MyFunc (o, 5, 'up'), A)'. Trong ví dụ này với hai tham số cố định, một giá trị vô hướng '5' và một chuỗi' 'up''. – erik

Các vấn đề liên quan