двоеточие:

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

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

Синтаксис

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

Описание

пример

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 возвращает пустую матрицу когда:

  • i, j или k являются пустым входом

  • i == 0

  • i > 0 и j > k

  • i < 0 и j < k

Советы

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

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

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

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

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