2017-08-14 146 views
0

假設我有一個行矩陣[a1 a2 a3 a4 .. an],我希望實現每個MATLAB如何總結各個元素MATLAB

1) 1+a1 
    2) 1+a1+a2 
    3) 1+a1+a2+a3 
    4) 1+a1+a2+a3+a4 
.... 
    1+a1+a2+...+an 

下面我怎能讓他們的?

+2

這幾乎聽起來像一個家庭作業問題。你有什麼嘗試? – beaker

+0

我試過使用for循環,但我無法正確構建它,我做了 x = [a1 a2 ... a100] (對於n = 1):100 s = 1 + x 但它明顯給出1+ a1然後1 + a2 –

+2

你可以看看https://de.mathworks.com/help/matlab/ref/cumsum.html – Max

回答

1

這是cumsum函數的用途。如果A是包含元素[a1 a2 a3 .. an]那麼矢量

B = cumsum([1 A]); 

包含您正在搜索的條款。另一種可能性是

B = 1 + cumsum(A); 

編輯

如果你不希望使用內置函數一樣cumsum,那麼簡單的方法去是做一個for循環:

% Consider preallocation for speed 
B = NaN(numel(A),1); 

% Assign the first element 
B(1) = 1 + A(1); 

% The loop 
for i = 2:numel(A) 
    B(i) = B(i-1) + A(i); 
end 

,或者無預分配:

B = 1 + A(1); 
for i = 2:numel(A) 
    B(end+1) = B(end) + A(i); 
end 

最好的,

+0

嗨,感謝您的回答,但我正在尋找一種解決方案,不會使用像cumsum –

+0

@Arijeet這樣的特殊功能,但您應該從一開始就在您的問題中說過。我已經更新了我的答案。 – Ratbert