- 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!