2012-05-14 16 views
7

Ich frage mich, was die Regel für die Verwendung von Vektoren als Bereich in For-Schleife in Matlab ist?Verwendung von Vektor als Bereich in For-Schleife In Matlab

Zum Beispiel

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

for i = range 
i 
end 
  1. Warum ist es, dass, wenn range Spaltenvektor ist, wird es nicht funktionieren, während wenn range Zeilenvektor ist, wird es?
  2. Wird i = range als i jeden Wert von range, oder i unter interpretiert werden range mit Vektor zugewiesen?

Dank ~

Antwort

3

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

for index = values 
    program statements 
      : 
end 

... values hat eine der folgenden Formen annehmen:

valArray

erstellt einen Spaltenvektor-Index nachfolgende Spalten o f Array valArray bei jeder Iteration. Zum Beispiel auf der ersten Iteration index = valArray(:,1) ...

0
  1. Es ist so, weil es so ist. Ich glaube nicht, dass es dafür eine tiefgehende Erklärung gibt.
  2. Wie Sie herausfinden würden, wenn Sie experimentierten, sobald Sie eine Zuweisung wie range = [0.1:0.01:2] gemacht haben, dann ist die Variable range ein Zeilenvektor, der die Werte in dem Bereich enthält. Ihre Schleife wird gut funktionieren. Wie es wäre, wenn es in der Regel

    for i = [0.1 0.11 0.12 ...]

10

Weitere gestartet, kann range eine Matrix sein, und die Schleifenvariable Schleifen über ihre Spalten.

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 

Wenn also range ein Zeilenvektor ist, wird es eine Schleife über seine Werte. Aber wenn ein Spaltenvektor ist, wird diese einzelne Spalte als Wert durchlaufen.

Verwandte Themen