Рефераты. Система математических расчетов MATLAB
Функции, действующие над плоскостями или матрицами,
такие как функции линейной алге-бры или матричные функции в директории matfun , не принимают
в качестве аргументов многомерные массивы. Иными словами, вы не можете
использовать функции в директории matfun, или
операторы *, ^, \, или
/, с многомерными массивами. Попытка использования многомерных массивов
или операндов в таких случаях приводит к сообщению об ошибке.
Вы можете, тем не менее, применить матричные
функции или операторы к матрицам внутри многомерных массивов. Например,
сооздадим трехмерный массив А
A = cat (3 , [1
2 3; 9 8 7; 4 6 5], [0 3 2; 8 8 4; 5 3 5], [6 4 7; 6 8 5; 5 4 3]);
Применение
функции eig ко всему многомерному массиву дает сообщение об ошибке:
eig(A)
??? Error using è eig
Input arguments must be 2-D.
Вы
можете, однако, приментиь функцию eig к отдельным плоскостям в пределах массива.
Например, воспользуемся оператором двоеточия для выделения одной страницы
(допустим, второй):
eig( A(:, :, 2))
ans =
–2.6260
12.9129
2.7131
Внимание! В первом случае, где не используется оператор двоеточия,
для избежания ошиб-ки нужно использовать функцию squeeze. Например, ввод eig ( A(2,:,:))
приводит к ошибке так как размер входа есть [1 3 3]. Выражение eig( squeeze( A(2, :, :))) , однако, передает функции eig допустимую
двумерную матрицу.
Организация данных в многомерных массивах
Вы можете использовать два возможных варианта
представления данных при помощи многомерных массивов:
Как плоскости (или страницы) двумерных данных. В дальнейшем вы
можете обра-щаться с этими страницами как с матрицами.
Как многомерные данные. Например, вы можете иметь четырехмерный
массив, где каждый элемент соответствует температуре или давлению воздуха,
измеренным на равномерно распределенной трехмерной (пространственной)
сетке в комнате.
В
качестве конкретного примера рассмотрим представление какого-либо изображения в
формате RGB. Напомним, что в формате RGB изображение хранится в виде трех двумерных матриц
одинакового размера, каждая из которых характеризует интенсивность одного цвета
– красного (Red), зеленого (Green) и синего (Blue) - в соответствующей точке. Общая карти-на при
этом получается в результате наложения трех указанных матриц. Для отдельного
изображения, использование многомерных массивов является, вероятно, наиболее
легким путем для запоминания данных и доступа к ним.
Пусть
все изображение хранится в файле RGB . Для доступа к полной плоскости изображе-ния в
одном цвете, допустим – красном, следует записать
red_ plane = RGB (:,:,1);
Для
доступа к части всего изображения можно использовать запись
subimage = RGB (20:40, 50:85,
:)
Изображение
в формате RGB является хорошим примером данных, для которых может
пот-ребоваться доступ к отдельным плоскостям, для операций типа фильтрации
или просто де-монстрации. В других задачах, однако, сами данные могут быть
многомерными. Рассмотри, например, набор температур, измеренных на равномерной
пространственной сетке какого-либо помещения.
В данном случае пространственное положение каждого
значения температуры является составной частью набора данных , то есть
физическое расположение в трехмерном прос-транстве является частью информации.
Такие данные также весьма прспособлены для представления при помощи многомерных
массивов (см.рисунок выше).
Здесь,
чтобы найти среднее значение всех измерений, то есть среднюю температуру воздуха
в комнате, можно записать
mean ( mean ( mean ( TEMP)))
где через TEMP обозначен массив четырехмерных данных.
Дл
получения вектора «серединных» температур (элемента (2,2)) комнаты на каждой
странице, то есть в каждом сечении, запишем
B = TEMP (2, 2, :).
ОРГАНИЗАЦИЯ И ХРАНЕНИЕ ДАННЫХ
Для хранения различных типов данных в системе MATLAB
используются так называемые структуры (structure) и ячейки (cell). Структуры (иногда их называют массивами
структур) служат для хранения массивов различных типов данных, организаванных
по принципу пои-менованных полей. Ячейки (или массивы ячеек) являются
специальным классом массивов системы MATLAB, чьи элементы состоят из ячеек, в которых могут
храниться любые другие массивы данных, применяемые в MATLAB-е. Как
структуры, так и ячейки обеспечивают иерархический механизм для хранения самых
различных типов данных. Они отличаются друг от друга прежде всего способом
организации базы данных. При использовании струк-тур доступ к данным
осуществляется при помощи наименований полей, тогда как в массивах ячеек доступ
осуществляется при помощи матричной индексации.
В приведенных ниже таблицах дается краткое описание
функций MATLAB-а, предназначен-ных для работы с массивами структур и
ячеек
Структуры
Функция
Описание
fieldnames
Получить имена полей
getfield
Получить содержание поля
isfield
Истинно, если поле есть в структуре
isstruct
Истинно, если структура
rmfield
Удалить поле
setfield
Установить содержимое поля
struct
Создать массив структур
struct2cell
Преобразовать структуру в массив ячеек