if a=[1,2,3,4] how can i get b=[ (1+2),(1+3),(1+4),(2+3),(2+4),(3+4) ] using for loops,Thanks
2 次查看(过去 30 天)
显示 更早的评论
a=[1,2,3,4]
b=[ (1+2),(1+3),(1+4),(2+3),(2+4),(3+4) ]
3 个评论
采纳的回答
James Tursa
2016-8-18
编辑:James Tursa
2016-8-18
The limits on your first for-loop are not correct. In particular, length(a-1) is not the same as length(a)-1. And the limits on your second for-loop are incorrect as well. You need to start the second loop index at i+1, not hard-coded start at 2. Then, for simplicity, maybe just use a counter to update the appropriate index of b. So, make the following changes:
for i=1:length(a-1)
Make the upper limit length(a)-1 instead of length(a-1)
for(k=2:length(a))
Make the lower limit i+1 instead of 2 (and get rid of the outer parentheses)
if(i==k)
b=a(k+1)+a(i)
else
b=a(k)+a(i)
end
No need for an if-test here. Simply set the appropriate element of b to your sum. E.g.,
x = 0; % <-- Do this at the start of your code
:
x = x + 1; % <-- Increment the subscript counter (inside the inner loop)
b(x) = a(k) + a(i); % <-- Set the appropriate element of b to your sum
0 个评论
更多回答(1 个)
Guillaume
2016-8-18
Here's an answer without a loop. More efficient!
a = 1:4
b = sum(nchoosek(a, 2), 2) %use nchoosek(a, 2) to create [1 2; 1 3; 1 4; 2 3; etc.]
2 个评论
J. Webster
2016-8-18
The purpose of homework is to work out things for yourself. Not to go on messageboards and try to get experts to do your work for you.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!