0

I am trying to write a MatLab function to compute Fibonacci numbers. below is what I have but it comes up with an error about F(0).

??? Attempted to access F(0); index must be a positive integer or logical.
Error in ==> fibonacci at 11
        F(0) = 0;

How do I tell matlab that the first two values in the array are 0 and 1??

function  F = fibonacci( n )
%A fibonacci sequence is where the next term in the series is given by the
%sum of the pervious two terms
%Only valid if n is greater than or equal to 2
if n >= 2 ;
    %Make an array with n terms
    F = zeros (1,n);
        %run a for loop from 2 to n
    for i = 2:n;
        F(0) = 0;
        F(1) = 1; 
        F(i) = F(i-1) + F(i-2)
    end
end
end
infused
  • 24,000
  • 13
  • 68
  • 78

2 Answers2

1

Your formatting is a bit off, but it seems like you are assigning a value to the zero-index of an array. As far as I know MatLab uses 1 as the index of the first item in an array.

If you change your if n>=2 to if >=3 and set the 1 and 2 index items instead of the 0 and 1 items you should be well on your way.

See also Is zero based indexing available in MATLAB

Community
  • 1
  • 1
madsny
  • 121
  • 6
0

MATLAB uses 1-based indexing, which means you should rewrite indices to reflect this shift, by replacing your n variables with n+1. This starts the fibonacci at 0, but indexed to 1, 1 at 2, 1 at 3, 2 at 4, 3 at 5, and so on to your "n"th term, now be indexed at n+1.

bythenumbers
  • 155
  • 1
  • 3
  • 10