how to sum a vector without sum function

57 ビュー (過去 30 日間)
nathan Short
nathan Short 2018 年 9 月 3 日
回答済み: Ameer Hamza 2020 年 11 月 4 日
function Mean = mean_strength(StrengthVector)
N = numel(StrengthVector);
x = sum(StrengthVector);
for i = 1:N
Mean = (1/N)*(x);
end
I need to change my code so I don't use the in built Matlab sum function.

回答 (5 件)

KL
KL 2018 年 9 月 3 日
編集済み: KL 2020 年 11 月 4 日
Your idea of using for loop is correct but you should use it to calculate the sum not the mean.
If there's a vector A = [1,2,3,4,5], how would you calculate the sum? By adding its elements with each other, right? It's pretty much the same here.
- create a resuting variable and initilize it to 0
result_sum = 0;
- use the for loop to index through A and add the current element to the above variable
result_sum = result_sum + A(i);
- once you are done with the for loop calculate mean by diving it with N (just like you've done but outside the loop)

Dennis
Dennis 2018 年 9 月 3 日
If the only requirement is to not use sum, i'd like to suggest to use cumsum instead!
A=cumsum(StrengthVector);
x=A(end);
As an alternative you could use a loop.

Matt J
Matt J 2018 年 9 月 3 日
編集済み: Matt J 2018 年 9 月 3 日
You can do all sorts of crazy things,
function Mean = mean_strength(StrengthVector)
N = numel(StrengthVector);
if N==1
Mean = StrengthVector;
else
Mean = StrengthVector(1)/N + (N-1)/N*mean_strength( StrengthVector(2:end) );
end
end

Matt J
Matt J 2018 年 9 月 3 日
x = log( prod(exp(StrengthVector)) );

Ameer Hamza
Ameer Hamza 2020 年 11 月 4 日
x = 1:10;
s = x*ones(size(x)).'

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by