MATLAB — Массивы
Все переменные всех типов данных в MATLAB являются многомерными массивами. Вектор — это одномерный массив, а матрица — это двумерный массив.
Мы уже обсуждали векторы и матрицы. В этой главе мы обсудим многомерные массивы. Однако перед этим давайте обсудим некоторые специальные типы массивов.
Специальные массивы в MATLAB
В этом разделе мы обсудим некоторые функции, которые создают специальные массивы. Для всех этих функций один аргумент создает квадратный массив, двойные аргументы создают прямоугольный массив.
нули() функция создает массив всех нулей —
Например —
Живая демонстрацияzeros(5)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
единицы() функция создает массив всех единиц —
Например —
Живая демонстрацияones(4,3)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 1 1 1 1 1 1 1 1 1 1 1 1
глаз() функция создает идентификационную матрицу.
Например —
Живая демонстрацияeye(4)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
ранд() функция создает массив равномерно распределенных случайных чисел на (0,1) -
Например —
Живая демонстрацияrand(3, 5)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003
Волшебный квадрат
магический квадрат это квадрат, который дает одну и ту же сумму, когда его элементы складываются по строкам, по столбцам или по диагонали.
магия() Функция создает массив магических квадратов. Требуется единственный аргумент, который дает размер квадрата. Аргумент должен быть скаляром, большим или равным 3.
Живая демонстрацияmagic(4)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
Многомерные массивы
Массив, имеющий более двух измерений, в MATLAB называется многомерным массивом. Многомерные массивы в MATLAB являются расширением обычной двумерной матрицы.
Обычно для создания многомерного массива мы сначала создаем двумерный массив и расширяем его.
Например, давайте создадим двумерный массив a.
Живая демонстрацияa = [7 9 5; 6 1 9; 4 3 2]
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
a = 7 9 5 6 1 9 4 3 2
Массив a представляет собой массив 3 на 3; мы можем добавить третье измерение к a , указав такие значения, как −
Живая демонстрацияa(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9
Мы также можем создавать многомерные массивы, используя функции one(), zeros() или rand().
Например,
Живая демонстрацияb = rand(4,3,2)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
Мы также можем использовать cat() Функция для построения многомерных массивов. Он объединяет список массивов по указанному измерению —
Синтаксис функции cat() —
B = cat(dim, A1, A2...)
Где,
-
Б создан новый массив
-
А1 , A2 , ... массивы для объединения
-
затемнение размерность, по которой следует объединять массивы
Пример
Создайте файл сценария и введите в него следующий код —
Живая демонстрацияa = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Когда вы запускаете файл, он отображает -
c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0
Функции массива
MATLAB предоставляет следующие функции для сортировки, поворота, перестановки, изменения формы или сдвига содержимого массива.
Функция | Цель |
---|---|
длина | Длина вектора или наибольшее измерение массива |
ndims | Количество измерений массива |
число | Количество элементов массива |
размер | Размеры массива |
столбец | Определяет, является ли ввод вектор-столбцом |
пусто | Определяет, пуст ли массив |
ismatrix | Определяет, является ли ввод матричным |
исров | Определяет, является ли ввод вектором-строкой |
исскаляр | Определяет, является ли ввод скалярным |
исвектор | Определяет, является ли ввод векторным |
blkdiag | Создает блочную диагональную матрицу из входных аргументов |
круговое смещение | Сдвигает массив по кругу |
ctranspose | Комплексно-сопряженное транспонирование |
диаг | Диагональные матрицы и диагонали матрицы |
флипдим | Переворачивает массив по указанному измерению |
fliplr | Переворачивает матрицу слева направо |
флипуд | Переворачивает матрицу вверх-вниз |
заглушить | Инверсия переставляет размеры массива N-D |
переставить | Изменяет размеры массива N-D |
переформатировать | Репликаты и массив листов |
изменить форму | Изменяет форму массива |
rot90 | Поворачивает матрицу на 90 градусов |
shiftdim | Изменяет размеры |
отсортировано | Определяет, отсортированы ли элементы набора |
сортировать | Сортирует элементы массива в порядке возрастания или убывания |
сортировка | Сортирует строки по возрастанию |
сжать | Удаляет одноэлементные измерения |
транспонировать | Транспонировать |
векторизация | Векторизация выражения |
Примеры
Следующие примеры иллюстрируют некоторые из упомянутых выше функций.
Длина, размер и количество элементов —
Создайте файл сценария и введите в него следующий код —
Живая демонстрацияx = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s
Когда вы запускаете файл, он отображает следующий результат —
ans = 8 ans = 4 ans = 23
Круговое смещение элементов массива —
Создайте файл сценария и введите в него следующий код —
Живая демонстрацияa = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.
Когда вы запускаете файл, он отображает следующий результат —
a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4
Сортировка массивов
Создайте файл сценария и введите в него следующий код —
Живая демонстрацияv = [ 23 45 12 9 5 0 19 17] % horizontal vector sort(v) % sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column
Когда вы запускаете файл, он отображает следующий результат —
v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2
Массив ячеек
Массивы ячеек — это массивы индексированных ячеек, в которых каждая ячейка может хранить массив различных размеров и типов данных.
ячейка Функция используется для создания массива ячеек. Синтаксис функции ячейки —
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Где
-
С массив ячеек;
-
затемнение скалярное целое число или вектор целых чисел, определяющий размеры массива ячеек C;
-
темный1, ..., затемненныйN являются скалярными целыми числами, которые определяют размерность C;
-
объект является одним из следующих —
- Массив или объект Java
- Массив .NET типа System.String или System.Object
Пример
Создайте файл сценария и введите в него следующий код —
Живая демонстрацияc = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Когда вы запускаете файл, он отображает следующий результат —
c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 }
Доступ к данным в массивах ячеек
Есть два способа обратиться к элементам массива ячеек —
- Заключите индексы в первую квадратную скобку (), чтобы ссылаться на наборы ячеек.
- Заключите индексы в фигурные скобки {}, чтобы ссылаться на данные в отдельных ячейках.
Когда вы заключаете индексы в первую скобку, это относится к набору ячеек.
Индексы массива ячеек в круглых скобках относятся к наборам ячеек.
Например —
Живая демонстрацияc = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 }
Вы также можете получить доступ к содержимому ячеек, индексируя их фигурными скобками.
Например —
Живая демонстрацияc = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}
MATLAB выполнит приведенный выше оператор и вернет следующий результат —
ans = Blue ans = Green ans = Yellow
MATLAB