English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Все переменные всех типов данных в MATLAB являются многомерными массивами. Вектор — это одномерный массив, а матрица — двумерный массив.
Мы уже обсуждали векторы и матрицы. В этой главе мы будем обсуждать многомерные массивы. Но до этого давайте рассмотрим некоторые специальные типы массивов.
В этой главе мы будем обсуждать некоторые функции создания специальных массивов. Для всех этих функций один параметр создает квадратный массив, а два параметра создают прямоугольный массив.
zeros()Функция создает массив, все элементы которого равны 0
Например-
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()Функция создает массив, все элементы которого равны 1
Например-
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Это квадрат, когда элементы его summируются по строкам, столбцам или диагоналям, они дают одинаковые суммы.
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является массивом 3x3; мы можем добавить третье измерениеодин,предоставляя аналогичные значения-
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 предоставляет следующие функции для сортировки, вращения,置换, формовки или смещения содержимого массива.
Функция | Действие |
---|---|
length | Длина вектора или максимальная размерность массива |
ndims | Размерность массива |
numel | Число элементов массива |
size | Размерность массива |
iscolumn | Определить, является ли вход столбцовым вектором |
isempty | Определить, пуст ли массив |
ismatrix | Определить, является ли вход матрицей |
isrow | Определить, является ли вход строковым вектором |
isscalar | Определить, является ли вход скаляр |
isvector | Определить, является ли вход вектор |
blkdiag | Создать блок-диагональную матрицу на основе входных параметров |
circshift | Циклический сдвиг массива |
ctranspose | Комплексное обратное транспонирование |
diag | Диагональные матрицы и диагонали матриц |
flipdim | Отражение массива по заданной размерности |
fliplr | Горизонтальное отражение матрицы |
flipud | Вертикальное отражение матрицы |
ipermute | Обратное преобразование размерностей N-D массива |
permute | Перестановка размерностей N-D массива |
repmat | Копирование и нарезка массива |
reshape | Изменить форму массива |
rot90 | Повернуть матрицу на 90 градусов |
shiftdim | Перемещение размерностей |
issorted | Определение того, является ли множество элементов отсортированным |
sort | Сортировка элементов массива по возрастанию или убыванию |
sortrows | Сортировка строк по возрастанию |
squeeze | Удаление singleton размерности |
transpose | Транспонирование |
vectorize | Векторизация выражений |
Ниже приведены примеры некоторых из упомянутых функций.
Длина, размерность и количество элементов
Создайте файл скрипта и введите следующий код-
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]) % цилиндрический сдвиг значений первого измерения % вниз на 1 % и значения второго измерения слева % увеличены на 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] % горизонтальный вектор sort(v) % сортировка v m = [2 6 4; 5 3 9; 2 0 1] % двумерный массив sort(m, 1) % сортировка m по строке sort(m, 2) % сортировка m по столбцу
Когда вы запускаете файл, он показывает следующий результат-
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Функция используется для создания массива ячеек. Синтаксис функции 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