Рефераты. Система математических расчетов MATLAB

4 3 6

A(:, :, 2) =

1 0 4

3 5 6

9 8 7

Вы можете продолжить добавление строк, столбцов или страниц аналогичным образом.

Расширение Многомерных Массивов. Для расширения любой размерности массива А нужно:

· Увеличить или добавить соответствующий индекс и задать требуемые значения.

· Добавить такое же количество элементов к соответствующим размерностям массива. Так, для числовых массивов все строки должны иметь одинаковое число элементов, все страницы должны иметь одинаковое число строк и столбцов и т.д.

Вы можете воспользоваться свойством скалярного распространения системы MATLAB, совместно с оператором двоеточия, для заполнения всей размерности единственным числом:

A(:, :, 3) = 5;

A(:, :, 3)

ans =

5 5 5

5 5 5

5 5 5

Для превращения А в четырехмерный массив размерности 3х3х3х2 введите

A(:, :, 1, 2) = [1 2 3; 4 5 6; 7 8 9];

A(:, :, 2, 2) = [9 8 7; 6 5 4; 3 2 1];

A(:, :, 3, 2) = [1 0 1; 1 1 0; 0 1 1];

Отметим, что после первых двух вводов MATLAB добавляет в A требуемое количество нулей, чтобы поддержать соответствующие размеры размерностей (речь идет о первом элементе по четвертой размерности, то есть при четвертом индексе равном единице, массив А будет содержать три нулевые матрицы размера 3х3).

Создание масивом с применением функций MATLAB-а.

Вы можете использовать для создания многомерных массивов такие функции MATLAB-а как randn, ones, и zeros, совершенно аналогично способу используемому для двумерных матриц. Каждый вводимый аргумент представляет размер соответствующей размерности в результирующем массиве. Например, для создания массива нормально распределенных случайных чисел размера 4х3х2 следует записать:

B = randn(4,3,2).

Для создания массива, заполненного единственным постоянным значением можно восполь-зоваться функцией repmat. Эта функция копирует массив (в нашем случае массив размера 1х1) вдоль вектора размерностей массива.

B = repmat(5,[3 4 2])

B(:, :, 1) =

5 5 5 5

5 5 5 5

5 5 5 5

B(:, :, 2) =

5 5 5 5

5 5 5 5

5 5 5 5

Внимание! Любая размерность массива может иметь размер 0, что просто дает пустой массив (empty array) . Так, размер 10х0х20 является допустимым размером многомерного массива.

Создание многомерного массива при помощи функции cat.

Функция cat дает простой путь построения многомерных массивов; она объединяет набор массивов вдоль заданной размерности.

B = cat (dim,A1,A2...)

где А1, А2 и т.д. являются объединяемыми массивами. а dim есть размерность, вдоль которой они объединяются. Например, для создания нового массива из двух двумерных матриц при помощи функции cat запишем

B = cat (3, [2 8; 0 5], [1 3; 7 9])

что дает трехмерный массив с двумя страницами

B(:, :, 1) =

2 8

0 5

B(:, :, 2) =

1 3

7 9

Функция cat принимает любые комбинации существующих и новых данных. Более того, вы можете осуществлять вложение данных функций. Приведенные ниже строки, к примеру, формируют четырехмерный массив:

A = cat (3, [9 2; 6 5], [7 1; 8 4])

B = cat (3, [3 5; 0 1], [5 6; 2 1])

D = cat (4, A, B, cat (3, [1 2; 3 4], [4 3; 2 1])).

Функция cat автоматически добавляет, при необходимости, единичные индексы между размерностями. Например, для создания массива размера 2х2х1х2 можно ввести

C = cat (4, [1 2; 4 5], [7 8; 3 2])

В данном случае функция cat вводит нужное число единичных размерностей для создания четырехмерного массива, чья последняя размерность не является единичной. Если бы аргумент dim был бы равен 5, последняя запись привела бы к массиву размера 2х2х1х1х2. Это добавляет еще одну единицу в индексации массива. Для обращения к значению 8 в четырехмерном случае нужно применить следующую индексацию

Индекс единичной размерности

Определение характеристик многомерных массивов.

Для получения информации об имеющихся многомерных массивах можно воспользоваться стандартными командами size (дает размер массива), ndims (дает количество размерностей) и whos (последняя команда дает подробную информацию о всех переменных рабочего пространства системы MATLAB). Для вышеприведенного примера мы получим

size(C)

ans =

2 2 1 2

ndims(C)

ans =

4

Индексация

Многие концепции, используемые в двумерном случае, распространяются также на много-мерные массивы. Для выделения (обращения) к какому-либо одному элементу многомерного массива следует воспользоваться целочисленной индексацией. Каждый индекс указывает на соответствующую размерность: первый индекс на размерность строк, второй индекс на раз-мерность столбцов, третий на первую размерность страниц и так далее. Рассмотрим массив случайных целых чисел nddata размера 10х5х3:

nddata = fix (8*randn (10, 5, 3));

Для обращения к элементу (3,2) на странице 2 массива nddata нужно записать nddata(3,2,2).

Вы можете также использовать векторы как массив индексов. В этом случае каждый элемент вектора должен быть допустимым индексом, то есть должен быть в пределах границ, опре-деленных для размерностей массива. Так, для обращения к элементам (2,1), (2,3), и (2,4) на странице 3 массива nddata, можно записать

nddata (2, [1 3 4], 3).

Оператор двоеточия и индексирование многомерных массивов.

Стандартная индексация MATLAB-а при помощи оператора двоеточия (colon) применима и в случае многомерных массивов. Например, для выбора всего третьего столбца страницы 2 массива nddata используется запись nddata(:, 3, 2). Оператор двоеточия также полезен и для выделения определенных подмножеств данных. Так, ввод nddata(2:3,2:3,1) дает массив (мат-рицу) размера 2х2, который является подмножеством данных на странице 1 массива nddata. Эта матрица состоит из данных второй и третьей строки и сторого и третьего столбца первой стриницы многомерного массива. Оператор двоеточия может использоваться для индексации с обеих сторон записи. Например, для создания массива нулей размера 4х4 записываем:

C = zeros (4,4)

Теперь, чтобы присвоить значения подмножества 2х2 массива nddata четырем элементам в центре массива С запишем

C(2:3,2:3) = nddata (2:3,1:2,2)

Устранение неопределенностей в многомерной индексации

Некоторые выражения, такие как

A(:, :, 2) = 1:10

Являются неоднозначными, поскольку они не обеспечивают достаточного объема информа-ции относительно структуры размерности, в которую вводятся данные. В представленном выше случае, делается попытка задать одномерный вектор в двумерном объекте. В таких ситуациях MATLAB выдает сообщение об ошибке. Для устранения неопреденности, нужно убедиться, что обеспечена достаточная информация о месе записи данных, и что как данные так и место назначения имеют одинаковую форму. Например,

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.