English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Массивы MATLAB

Все переменные всех типов данных в MATLAB являются многомерными массивами. Вектор — это одномерный массив, а матрица — двумерный массив.

Мы уже обсуждали векторы и матрицы. В этой главе мы будем обсуждать многомерные массивы. Но до этого давайте рассмотрим некоторые специальные типы массивов.

Специальные массивы в 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