2012-05-14 12 views
7

Me preguntaba cuál es la regla para usar vectores como rango en for-loop en Matlab?Usando vector como rango en for-loop En Matlab

Por ejemplo,

range = [0.1:0.01:2]'; % wrong 
range = [0.1:0.01:2]; % correct 

for i = range 
i 
end 
  1. ¿Por qué es que si es range vector columna, no va a funcionar, mientras que si es range vector fila, lo hará?
  2. Will i = range interpretarse como i teniendo cada valor de range, o i se asigna con el vector range?

Gracias ~

Respuesta

3

De http://www.mathworks.co.uk/help/techdoc/ref/for.html:

for index = values 
    program statements 
      : 
end 

... values tiene una de las siguientes formas:

valArray

crea un índice de la columna del vector de columnas posteriores o f array valArray en cada iteración. Por ejemplo, en la primera iteración, index = valArray(:,1) ...

0
  1. Es de esa manera porque es de esa manera. No creo que haya una explicación profunda para esto.
  2. Como descubriría si experimentó, una vez que ha realizado una tarea como range = [0.1:0.01:2], la variable llamada range es un vector de fila que comprende los valores en el rango. Tu ciclo funcionará bien. Como lo haría si se ha iniciado

    for i = [0.1 0.11 0.12 ...]

10

De manera más general, range puede ser una matriz, y bucles de la variable de bucle sobre sus columnas.

range = rand(3,3); 
for col = range 
col 
end 

col = 
     0.86341 
     0.11625 
     0.20319 
col = 
     0.59721 
    0.098357 
     0.8356 
col = 
     0.89578 
     0.46217 
     0.93585 

Así que si range es un vector fila, lo hará un bucle sobre sus valores. Pero si range es un vector de columna, recorrerá esa única columna como su valor.

Cuestiones relacionadas