# having one "for" loop instead of two

10 visualizaciones (últimos 30 días)
Bahareh el 29 de Nov. de 2011
Hello all,
I have two "for" loops.
for a=0:10
for b=0:10
c=a+b;
end
end
I would like two combine them and put them in one "for" loop but I have error.
for a=0:10 && b=0:10
c=a+b;
end
Can anybody help me? thanks.
##### 2 comentariosMostrar NingunoOcultar Ninguno
Daniel Shub el 29 de Nov. de 2011
This doesn't make any sense. You keep over writing c on every iteration.
Walter Roberson el 29 de Nov. de 2011
You cannot iterate two variables in one "for"

Iniciar sesión para comentar.

Jan el 29 de Nov. de 2011
Actually it is said already. But not explicitely:
a = 0:10;
b = 0:10;
for k = 1:length(a)
c = a(k) + b(k);
end
##### 4 comentariosMostrar 2 comentarios más antiguosOcultar 2 comentarios más antiguos
Matt Tearle el 29 de Nov. de 2011
This doesn't make sense, though. Your whole point was that you wanted to evaluate c at the same values of a and b, not at every combination of a and b. So you're not making a surface -- you're making a line (along the diagonal in a-b space). In other words, you don't have c(0,7) or c(3,2) or ..., which you need to make a surface. All you have is c(0,0), c(1,1), c(2,2), etc.
Walter Roberson el 29 de Nov. de 2011
The new question that was created was http://www.mathworks.com/matlabcentral/answers/22579-surface-plot
I show how to embed the line within a surface there. It isn't a useful thing to do in this situation, but perhaps it will be useful for someone else.

Iniciar sesión para comentar.

### Más respuestas (4)

Matt Tearle el 29 de Nov. de 2011
As Walter said, you can't loop over two variables in the same for-loop. So the real question is: why do you want to do this? What's the problem with the two nested loops that you're trying to avoid/fix/solve?
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Bahareh el 29 de Nov. de 2011
In the two loop case, each value of a corresponds to 11 values of b. I wan each value of a be corresponding to one value of b; in other words, I wan a=0 be corresponding to b=0 and a=5 be corresponding to b=5?

Iniciar sesión para comentar.

Hin Kwan Wong el 29 de Nov. de 2011
Your code does not make sense because it's overwriting c each time you loop it Your answer is just equal to c = last a + last b = 10+10 = 20
If you want to sum all c values: a=0:10; b=a; sum([a+b])
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Walter Roberson el 29 de Nov. de 2011
for a=0:10
b = a;
c = a + b;
end
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Michael el 29 de Nov. de 2011
From the comments I think you want the surface c = a + b
Just use a nested loop
c = zeros(11);
for a = 0:10
for b = 0:10
c(a+1,b+1) = a + b;
end
end
surf(a,b,c)
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

### Community Treasure Hunt

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

Start Hunting!

Translated by