"Вычисления, визуализация и программирование в среде 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 |
|
|