Система математических расчетов MATLAB
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
кторов, действует вдоль первой неединичной размерности, имеющей размер 3.
Внимание! Во многих случаях эти функции имеют другие ограничения на входные аргумен-ты например, некоторые функции, допускающие многомерные входные массивы, требуют чтобы массивы имели одинаковый размер.
Поэлементное воздействие
Те функции MATLAB-а, которые действуют поэлементно на двумерные массивы, такие как тригонометрические и экспоненциальные функции, работают совершенно аналогично и в многомерном случае. Например, функция sin возвращает массив того же размера, что и вход-ной массив. Каждый элемент выходного массива является синусом соответствующего эле-мента входного массива. Аналогично, все арифметические, логические операторы и операторы отношения действуют с соответствующими элементами многомерных массивов (которые должны иметь одинаковые размеры каждой размерности). Если один из операндов является скаляром, а второй скаляром, то операторы применяют скаляр ко всем элементам массива.
Действия над плоскостями и матрицами
Функции, действующие над плоскостями или матрицами, такие как функции линейной алге-бры или матричные функции в директории 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, чьи элемен