Значение оператора двоеточия в MATLAB - PullRequest
1 голос
/ 21 октября 2010

Я столкнулся с синтаксисом MATLAB с двоеточием, которое я не до конца понимаю.

Первый вопрос:

Выражение: 0:pi/4:pi Результаты в ответе: 0 0.7854 1.5708 2.3562 3.1416

Почему это так? Я думал, что оператор двоеточия используется как быстрый способ ссылки на индексы, поэтому нам не нужно выписывать полный список. (например, 1:3 -> 1 2 3)

Второй вопрос:

Как и выше, скажем, есть ли у меня матрица X = [1 2 3 4 5 6 7 8 9]. Как я могу интерпретировать выражение X(:,1:3)? В частности, что означает оператор двоеточия без левого и правого чисел?

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

На самом деле 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 по двоеточие (:) .

0 голосов
/ 22 октября 2010

Мои две копейки на ответ KennyTM.

На самом деле скалярные и векторные переменные в MATLAB имеют 2 измерения.Скаляр имеет 1 строку и 1 столбец, а вектор имеет 1 строку или столбец.Просто попробуйте size(X).

Оператор двоеточия (:) для индексации просто означает all .Синтаксис X(:,1:3) означает получение всех строк и столбцов от 1 до 3. Поскольку ваша переменная X имеет только 1 строку, вы получите первые 3 значения в этой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...