MATLAB Answers

0

creating loop with two variables

Asked by sermet on 7 Dec 2017
Latest activity Answered by Jan
on 7 Dec 2017
For example;
a=0:2:10;
b=0:2:6;
% number of elements of a is always bigger than b
I need to create for loop as below;
result(1)=a(1)-b(1);
result(2)=a(2)-b(2);
result(3)=a(3)-b(3);
result(4)=a(4)-b(4);
result(5)=a(5)-b(4);
result(6)=a(6)-b(4);
Since a and b variables' number isn't constant for each problem. How can I create this loop for working properly with arbitrary numbers of a and b?

  0 Comments

Sign in to comment.

Tags

3 Answers

Answer by Birdman
on 7 Dec 2017
Edited by Birdman
on 7 Dec 2017
 Accepted Answer

for i=1:max(numel(a),numel(b))
if(i>=min(numel(a),numel(b)))
result(i)=a(i)-b(min(numel(a),numel(b)));
else
result(i)=a(i)-b(i);
end
end

  3 Comments

Seven lines of code... see my answer for a simpler solution.
Birdman
on 7 Dec 2017
Your answer is of course simpler but he mentioned to do it with a for loop, therefore I wrote this. Otherwise of course I would have written something like you did.
KL
on 7 Dec 2017
You could call numel, outside the loop and store its output in a variable (after finding min and max) and only use this variable inside the loop.
Now, you're calling min and numel so many times (sometimes even twice within the same iteration).

Sign in to comment.


Answer by Stephen Cobeldick on 7 Dec 2017
Edited by Stephen Cobeldick on 7 Dec 2017

Why waste time writing an ugly loop? Here is a simpler solution in just two lines:
>> a = 0:2:10;
>> b = 0:2:6;
>> v = 1:max(numel(a),numel(b));
>> a(min(v,end))-b(min(end,v))
ans =
0 0 0 0 2 4

  0 Comments

Sign in to comment.


Jan
Answer by Jan
on 7 Dec 2017

% number of elements of a is always bigger than b
This was not considered in the other suggestions. Another solution:
a = 0:2:10;
b = 0:2:6;
result = a - b(min(1:numel(a), numel(b)))

  0 Comments

Sign in to comment.