假設我有一個行矩陣[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
下面我怎能讓他們的?
假設我有一個行矩陣[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
下面我怎能讓他們的?
這是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
最好的,
嗨,感謝您的回答,但我正在尋找一種解決方案,不會使用像cumsum –
@Arijeet這樣的特殊功能,但您應該從一開始就在您的問題中說過。我已經更新了我的答案。 – Ratbert
這幾乎聽起來像一個家庭作業問題。你有什麼嘗試? – beaker
我試過使用for循環,但我無法正確構建它,我做了 x = [a1 a2 ... a100] (對於n = 1):100 s = 1 + x 但它明顯給出1+ a1然後1 + a2 –
你可以看看https://de.mathworks.com/help/matlab/ref/cumsum.html – Max