- Calculate the length of the vector v, which is 9
- Create the vector 1:length(v), which is the vector [1 2 3 4 5 6 7 8 9]
- Test whether each element of that vector is less than 10. Since they all are, the result is [1 1 1 1 1 1 1 1 1]
- Loop over that vector
How do I sum the elements in a vector up to a specific value?
29 ビュー (過去 30 日間)
古いコメントを表示
I need to sum the numbers in an array up to the value 10. So with a function input of v=[2,3,2,2,1,3,1,10,3], I would not include 10 or any values after it in the sum. Below I have the function I am working with, I am currently getting an output of 18 instead of 14
function [prize]=sumPrize(v)
prize=0;
for i=1:length(v)<10
prize = prize + v(i);
end
end
1 件のコメント
the cyclist
2021 年 10 月 25 日
編集済み: the cyclist
2021 年 10 月 25 日
See my answer, but an explanation of why yours does not work is probably helpful.
Your loop does not do what you think it does. The line
for i=1:length(v)<10
is evaluated as follows:
So, your for loop is equivalent to
for i = [1 1 1 1 1 1 1 1 1]
prize = prize + v(i);
end
which means you are just summing the 1st element of v, 9 times. That's why you get 18.
回答 (1 件)
the cyclist
2021 年 10 月 25 日
Here is one way:
v = [2,3,2,2,1,3,1,10,3];
prize = sum(v(1:find(v==10,1)-1))
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!