MATLAB - Массивы
Все переменные всех типов данных в MATLAB - это многомерные массивы. Вектор - это одномерный массив, а матрица - двумерный массив.
Мы уже обсуждали векторы и матрицы. В этой главе мы обсудим многомерные массивы. Однако перед этим давайте обсудим некоторые специальные типы массивов.
Специальные массивы в MATLAB
В этом разделе мы обсудим некоторые функции, которые создают специальные массивы. Для всех этих функций один аргумент создает квадратный массив, двойной аргумент создает прямоугольный массив.
В zeros() функция создает массив всех нулей -
Например -
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() функция создает массив из всех -
Например -
ones(4,3)
MATLAB выполнит вышеуказанный оператор и вернет следующий результат -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
В eye() функция создает единичную матрицу.
Например -
eye(4)
MATLAB выполнит вышеуказанный оператор и вернет следующий результат -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
В rand() функция создает массив равномерно распределенных случайных чисел на (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
Волшебный квадрат
А magic square квадрат, который дает ту же сумму, когда его элементы складываются по строкам, столбцам или по диагонали.
В magic()функция создает массив магических квадратов. Требуется единственный аргумент, который дает размер квадрата. Аргумент должен быть скаляром, большим или равным 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
Мы также можем создавать многомерные массивы, используя функции ones (), 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...)
Где,
B - это новый созданный массив
A1 , A2 , ... - объединяемые массивы
dim - это размерность, по которой объединяются массивы
пример
Создайте файл сценария и введите в него следующий код -
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 | Количество измерений массива |
число | Количество элементов массива |
размер | Размеры массива |
iscolumn | Определяет, является ли ввод вектор-столбцом |
пусто | Определяет, пуст ли массив |
ismatrix | Определяет, является ли ввод матричным |
Isrow | Определяет, является ли ввод векторной строкой |
Искаляр | Определяет, является ли ввод скалярным |
isvector | Определяет, является ли ввод векторным |
blkdiag | Строит блочно-диагональную матрицу из входных аргументов |
круговой сдвиг | Сдвигает массив по кругу |
ctranspose | Комплексно сопряженное транспонирование |
диагональ | Диагональные матрицы и диагонали матрицы |
флипдим | Переворачивает массив по указанному измерению |
fliplr | Переворачивает матрицу слева направо |
флипуд | Переворачивает матрицу вверх вниз |
ipermute | Инвертирует перестановку размеров массива ND |
переставлять | Переставляет размеры массива ND |
повторять | Реплики и массив плиток |
изменить форму | Изменяет массив |
гниль90 | Поворачивает матрицу на 90 градусов |
shiftdim | Сдвигает размеры |
рассортированный | Определяет, отсортированы ли элементы набора |
Сортировать | Сортирует элементы массива в порядке возрастания или убывания |
сортировки | Сортирует строки в порядке возрастания |
сжимать | Удаляет одноэлементные размеры |
транспонировать | Транспонировать |
векторизовать | Векторизует выражение |
Примеры
Следующие примеры иллюстрируют некоторые из упомянутых выше функций.
Length, Dimension and Number of elements −
Создайте файл сценария и введите в него следующий код -
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
Circular Shifting of the Array Elements −
Создайте файл сценария и введите в него следующий код -
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
Массив ячеек
Массивы ячеек - это массивы проиндексированных ячеек, каждая из которых может хранить массив различных размеров и типов данных.
В cellфункция используется для создания массива ячеек. Синтаксис функции ячейки -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Где,
C - массив ячеек;
dim - скалярное целое число или вектор целых чисел, определяющий размеры массива ячеек C;
dim1, ..., dimN - целые скалярные числа, определяющие размеры C;
obj является одним из следующих:
- Массив или объект 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