Fibonacci.m for Fibonacci Series
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Here is a .m file what I made for Fibonacci Series:
function F = Fibonacci(n)
%Fibonacci Series: Calculate the nth term
%The Fibonacci numbers are the sequence 0, 1, 1, 2, 3, 5, 8, 13, 21….
%Given that the first two numbers are 0 and 1, the nth Fibonacci number is
%Fn = Fn–1 + Fn–2.
%Applying this formula repeatedly generates the Fibonacci numbers.
F(1) = 0;
F(2) = 1;
i = 3;
while i <= n
F(i) = F(i-1)+F(i-2);
i = i+1;
end
F = F(n);
end
If I input n is single number such as:
n=10;
Fibonacci(n)
It can give me the correct answer:
ans = 34
However, if I input n is an array, such as:
n=1:10;
Fibonacci(n)
It gives the error warning:
Index exceeds the number of array elements (2).
Error in Fibonacci (line 15)
F = F(n);
I just wonder why it occurs this information?
0 commentaires
Réponse acceptée
James Tursa
le 5 Juin 2020
Modifié(e) : James Tursa
le 5 Juin 2020
You function is not vectorized ... that is, it is not written to handle anything other than a scalar input. As written, you would need to call your function in a loop. E.g.,
n=1:10;
for k=1:numel(n)
F(k) = Fibonacci(n(k));
end
The alternative would be to rewrite your function so that it can handle non-scalar inputs. E.g., suppose you did this:
m = max(n);
while i <= m
Plus de réponses (1)
the cyclist
le 5 Juin 2020
Modifié(e) : the cyclist
le 5 Juin 2020
This code is not really written to handle anything but a scalar input. Consider this line in the code:
while i <= n
What would you expect it to do as it tries to evaluate this:
while 3 <= 1:10
?
It's certainly not what you intend, which would be some kind of parallel ("vectorized") version.
Instead, it's going to skip past that while loop because it is not true for all elements of the vector, and then try to evaluate
F = F(1:10)
which gives the error you see.
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!