2016-02-23 16 views
0

我想創建一個函數,從數組中的前兩個元素開始,然後從它們創建斐波那契數列,但它會創建一個帶有小數的奇怪矩陣,並且它是兩次每次我想要的列數。當我查閱它時,這是我在通過文檔努力之後想出來的。matlab中的函數內的數組問題

我幾乎沒有使用MATLAB的經驗,而且我習慣於python。我一直無法找到任何能夠解決我的問題的東西。或幫助。

function [f,s] = fibb(nmax) 
f = array(1,0); 
% first two items in array are 0 and 1 respectively 
for n = 3 : 1 : nmax 
    f(n) = [f(n-1) + f(n-2) newElem]; 
    % Adds new entry, entry is sum of previous two 
end 
s = sum(f); 
% sum of the sequence 
+3

什麼是'newElem'? – aschepler

+2

什麼是'array(1,0)'? – TroyHaskin

回答

0

array不是Matlab中的內置函數。另外,斐波那契數列以[1,1]開頭。

嘗試以下操作:

function [f,s] = fibb(nmax) 
    f = [1,1]; 
    for n = 3 : nmax 
     f(n) = f(n-1) + f(n-2); 
    end 
    s = sum(f); 
end 

有可能是一個更有效的方法,但是這應該是你的代碼的工作版本。

0

作爲RPM寫入內容的補充,我建議您預先分配f矢量以使其工作速度更快。只是下面的一個替代f = [1,1]命令:

f = ones(1,nmax); 

否則MATLAB具有動態增加向量的大小在每個循環,使你的函數慢。