2012-05-14 17 views
7

Mi chiedevo quale sia la regola per l'utilizzo dei vettori come intervallo in ciclo continuo in Matlab?Uso del vettore come intervallo in ciclo continuo In Matlab

Ad esempio,

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

for i = range 
i 
end 
  1. Perché è che se range è vettore colonna, non funzionerà, mentre se range è vettore riga, lo farà?
  2. Sarà i = range essere interpretato come i prendere ogni valore di range, o i viene assegnato con il vettore range?

Grazie ~

risposta

3

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

for index = values 
    program statements 
      : 
end 

... values ha una delle seguenti forme:

valArray

crea un indice di vettore colonna da colonne successive o f array valArray su ogni iterazione. Ad esempio, alla prima iterazione, index = valArray(:,1) ...

0
  1. E 'in questo modo perché è in questo modo. Non penso che ci sia una spiegazione profonda per questo.
  2. Come si scoprirebbe se si è sperimentato, dopo aver eseguito un compito come range = [0.1:0.01:2], la variabile denominata range è un vettore di riga che comprende i valori dell'intervallo. Il tuo ciclo funzionerà bene. Come sarebbe se è iniziato

    for i = [0.1 0.11 0.12 ...]

10

Più in generale, range può essere una matrice, e la variabile del ciclo loop su sue colonne.

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 

Quindi se range è un vettore di riga, esso ciclo sui suoi valori. Ma se range è un vettore colonna, eseguirà il loop su quella singola colonna come valore.

Problemi correlati