"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

v2 = vl( 5:8 ) ; v2 = 5 4 3 2
Выражение
где у операции формирования диапазона не указаны ни левый, ни правый операнды, подразумевает взятие всего диапазона возможных для исходного вектора vl индексов, причем в их естественном порядке возрастания. Это означает, что в естественном порядке извлекаются все элементы исходного вектора. Здесь можно подумать, что результат будет в точности равен исходному вектору.
MATLAB 5.x. Вычисления, визуализация, программирование 41
Однако это не так. Дело в том, что исходный вектор vl является именно вектор-строкой, а результат будет вектор-столбцом. Здесь в самый раз вспомнить, что система MATLAB хранит данные (элементы) массивов упорядоченно по столбцам. Это и определяет результат представленной выше операции:
vl( : ) ans =
9
8
7
б
5
4
3
2
1
Теперь рассмотрим множественную индексацию на примере матриц (двумерных массивов). Эта операция позволяет извлечь из матрицы некоторую подматрицу ее элементов:
А = [ 1 2; 3 4; 5 б
В = А ( [ 2 3 L 1 :2
В =
3 4
5 б
Если при индексации матрицы А фиксировать единственный первый индекс (номер строки) и задать весь возможный диапазон для второго индекса (номера всех существующих столбцов), то можно извлечь из матрицы конкретную строку. Например, выражение
А( 2, : )
ans = 3 4
извлекает из матрицы А ее вторую строку.
Выражение А (:, :) полностью дублирует исходную матрицу, а выражение А (:) означает взятие всех ее элементов в том порядке, в котором они хранятся в памяти компьютера (то есть в виде одного длинного столбца):
А( : ) ans =
1
3 ¦ .
5
42 Глава 1. Числовые массивы в системе MATLAB
2
4 б
Итак, элементы матрицы хранятся линейно: сначала идут элементы первого столбца, затем- второго. Выражение А(4) означает взятие четвертого по счету элемента из так организованного для хранения матрицы единого столбца:
А( 4 ) ans = 2
Можно заменить в исходной матрице некоторую строку на другую:
А( 2, : ) = [ 8 9 ];
или удалить из матрицы целую строку, если использовать в операции присваивания пустой массив:
А( 2, : ) = [];
Рассмотренные операции очень удобны для формирования трехмерных массивов. Например, предварительно сформировав 30 матриц В1, В2, ..., ВЗО одинакового размера, следующими групповыми присваиваниями создаем трехмерный массив А:
А(:,:,1) = В1; А(:,:,2) = В2; ...А(:,:,30) = ВЗО;
где для повышения эффективности нужно последнее из указанных присваиваний осуществить первым.
Применяя операцию множественной индексации, можно легко переставлять местами строки и столбцы матриц. Например, у матрицы
F = [ 1 2 3; 4 5 6; 7 8 9 ] с помощью выражения
F = F( :, [ 3 1 2 ] )
последний столбец ставят на первое место, второй - на последнее, а первый столбец исходной матрицы становится вторым (см. рис. 1.20).
'} MATLAB Command Window ИЗ S3
?ile Edit,- Window Help

ifj рисунок 1.20