Я создаю сравнение вектора, чтобы проверить, имеет ли он последовательность Фибоначчи.Векторизация формулы в MATLAB
function f = fibo(n)
f(1)=7;
f(2)=9;
k=3:5;
f(k)=f(k-1)+f(k-2)
ans=isequal(n,f)
Выходные данные показывают,
f =
7 9 16 9 0
вместо
7 9 16 25 41
как я vectorise эту часть кода?
if n == 1,
f = 1; % First element is 1.
return;
elseif n == 2
f = [1 1]; % First two elements are 1.
else
% Call fibrec with previous result and compute next one from it.
fm1 = fibrec(n-1);
f = [fm1 fm1(end)+fm1(end-1)];
end
Я не показывал вектор сравнения, поскольку это функция ввода. моя ошибка заключается в приведенной здесь формуле. Мне нужна поправка к этой формуле, чтобы получить точный вектор 7 9 16 25 41 – Executor345
Я понимаю, что когда k = 3, i (1), i (2) учитываются, но когда k = 4, k = 5, то n 't добавить предыдущий i (k-1) + i (k-2) – Executor345
Как есть, ваш код возвращает ошибку: «Индекс превышает размеры матрицы». Вы инициализируете 'i' как вектор перед кодом, размещенным в вашем вопрос? Всегда указывайте [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve). – Jubobs