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