MatLab只分配前两个变量

时间:2011-09-28 00:23:38

标签: matlab

我正在尝试编写MatLab函数来计算Fibonacci数。下面是我所拥有的,但它出现了关于F(0)的错误。

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

如何告诉matlab数组中的前两个值是0和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

2 个答案:

答案 0 :(得分:1)

您的格式有点偏,但似乎您要为数组的零索引赋值。据我所知,MatLab使用1作为数组中第一项的索引。

如果您将if n>=2更改为if >=3并设置1和2索引项而不是0和1项,那么您应该可以顺利完成。

另见Is zero based indexing available in MATLAB

答案 1 :(得分:0)

MATLAB使用基于1的索引,这意味着您应该通过用n + 1替换n个变量来重写索引以反映这种转变。这使得fibonacci在0处开始,但索引为1,1在2,1,在3,2在4,3,在5,依此类推到你的第n个术语,现在被索引为n + 1。