colon, :

Векторное создание, индексирование массивов и for- итерация цикла

Синтаксис

x = j:k
x = j:i:k
A(:,n)
A(m,:)
A(:)
A(j:k)

Описание

Двоеточие является одним из самых полезных операторов в MATLAB®. Это может создать векторы, массивы индекса, и задать for итерации.

пример

x = j:k создает расположенный с интервалами модулем векторный x с элементами [j,j+1,j+2,...,j+m] где m = fix(k-j). Если j и k оба целые числа, затем это - просто [j,j+1,...,k].

пример

x = j:i:k создает расположенный с равными интервалами векторный x использование i как шаг между элементами. Векторные элементы примерно равны [j,j+i,j+2*i,...,j+m*i] где m = fix((k-j)/i). Однако, если i не целое число, затем арифметика с плавающей точкой играет роль в определении ли colon включает конечную точку k в векторе, начиная с k не может быть точно равно j+m*i. Если вы задаете нескалярные массивы, то MATLAB интерпретирует j:i:k как j(1):i(1):k(1).

x = colon(j,k) и x = colon(j,i,k) альтернативные пути состоят в том, чтобы выполнить команды j:k и j:i:k, но редко используются. Эти синтаксисы включают перегрузку операторов для классов.

пример

A(:,n), A(m,:), A(:), и A(j:k) общие выражения индексации для матричного A это содержит двоеточие. Когда вы используете двоеточие в качестве индекса в выражении индексации, таком как A(:,n), это действует как сокращение, чтобы включать все индексы в конкретное измерение массива. Также распространено создать вектор с двоеточием в целях индексации, такой как A(j:k). Некоторые выражения индексации комбинируют оба использования двоеточия, как в A(:,j:k).

Общие выражения индексации, которые содержат двоеточие:

  • A(:,n) nстолбец th матричного A.

  • A(m,:) mстрока th матричного A.

  • A(:,:,p) pстраница th 3D массива A.

  • A(:) изменяет все элементы A в вектор отдельного столбца. Это не оказывает влияния если A уже вектор-столбец.

  • A(:,:) изменяет все элементы A в двумерную матрицу. Это не оказывает влияния если A уже матрица или вектор.

  • A(j:k) использует векторный j:k индексировать в A и поэтому эквивалентно векторному [A(j), A(j+1), ..., A(k)].

  • A(:,j:k) включает все индексы в первую размерность, но использует векторный j:k индексировать во втором измерении. Это возвращает матрицу со столбцами [A(:,j), A(:,j+1), ..., A(:,k)].

Примеры

свернуть все

Создайте расположенный с интервалами модулем вектор чисел между 1 и 10. Оператор двоеточия использует шаг по умолчанию +1.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

Создайте векторы, которые постепенно увеличиваются или постепенно уменьшаются заданным значением.

Создайте вектор, элементы которого постепенно увеличиваются 0,1.

x = 0:0.1:1
x = 1×11

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

Создайте вектор, элементы которого постепенно уменьшаются-2.

y = 10:-2:0
y = 1×6

    10     8     6     4     2     0

Исследуйте несколько способов индексировать матрицу с помощью двоеточия :.

Создайте 3х3 матрицу. Индексируйте первую строку.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

A(1,:)
ans = 1×3

     8     1     6

Индексируйте второй и третий столбец.

A(:,2:3)
ans = 3×2

     1     6
     5     7
     9     2

Измените форму матрицы в вектор-столбец.

A(:)
ans = 9×1

     8
     3
     4
     1
     5
     9
     6
     7
     2

В контексте for- цикл, двоеточие задает итерации цикла.

Запишите for- цикл, который возводит в квадрат число для значений n между 1 и 4.

for n = 1:4
    n^2
end
ans = 1
ans = 4
ans = 9
ans = 16

Входные параметры

свернуть все

Стартовое векторное значение в виде действительного числового скаляра. Если j < k так, чтобы выходной вектор не был пуст, затем j первый элемент в векторе.

Пример: x = 0:5

Пример: x = 0:0.5:5

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Конечное векторное значение в виде действительного числового скаляра. k последнее значение в векторе только, когда инкрементные линии до точно приземляются на k. Например, векторный 0:5 включает 5 как последнее значение, но 0:0.3:1 не включает значение 1 как последнее значение, поскольку шаг приводит в порядок не линию с конечной точкой.

Пример: x = 0:5

Пример: x = 0:0.5:5

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Шаг между векторными элементами в виде действительного числового скаляра.

Пример: x = 0:0.5:5

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | datetime | duration

Выходные аргументы

свернуть все

Расположенный с равными интервалами вектор, возвращенный как вектор-строка. Если j > k, затем x = j:k пустая матрица. В более общем плане, синтаксис x = j:i:k возвращает пустую матрицу когда:

  • iJ, или k пустой вход

  • i == 0

  • i > 0 и j > k

  • i < 0 и j < k

Советы

  • for страница с описанием имеет описание того, как использовать : в контексте инструкций циклов.

  • linspace похоже на оператор двоеточия :, но это дает прямой контроль над числом точек и всегда включает конечные точки. Родственная функция logspace генерирует логарифмически распределенные значения.

  • Когда вы создаете вектор, чтобы индексировать в массив ячеек или массив структур (такой как cellName{:} или structName(:).fieldName), MATLAB возвращает несколько выходных параметров в списке, разделенном запятыми. Для получения дополнительной информации смотрите, Как Использовать Списки, разделенные запятыми.

Расширенные возможности

Представлено до R2006a