На самом деле a:b
генерирует вектор.Вы можете использовать его как индекс только потому, что (...)
также принимает список, например,
octave-3.0.3:10> a = [1,4,7]
a =
1 4 7
octave-3.0.3:11> b = [1,4,9,16,25,36,49]
b =
1 4 9 16 25 36 49
octave-3.0.3:12> b(a) # gets [b(1), b(4), b(7)]
ans =
1 16 49
Теперь синтаксис a:b:c
эквивалентен [a, a+b, a+2*b, ...]
до c
, например
octave-3.0.3:15> 4:7:50
ans =
4 11 18 25 32 39 46
, который объясняет, что вы получаете в 0:pi/4:pi
.
Один :
выбирает целые оси (строка / столбец), например
octave-3.0.3:16> a = [1,2,3;4,5,6;7,8,9]
a =
1 2 3
4 5 6
7 8 9
octave-3.0.3:17> a(:,1) # means a(1:3, 1)
ans =
1
4
7
octave-3.0.3:18> a(1,:) # means a(1, 1:3)
ans =
1 2 3
Подробнее см. В официальном документе MATLAB по двоеточие (:) .