Учебники

MATLAB — Массивы

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

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

Специальные массивы в MATLAB

В этом разделе мы обсудим некоторые функции, которые создают специальные массивы. Для всех этих функций один аргумент создает квадратный массив, двойные аргументы создают прямоугольный массив.

Функция нулей () создает массив всех нулей —

Например —

Live Demo

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 () создает массив всех единиц —

Например —

Live Demo

ones(4,3)

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

ans =
      1     1     1
      1     1     1
      1     1     1
      1     1     1

Функция eye () создает единичную матрицу.

Например —

Live Demo

eye(4)

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

ans =
      1     0     0     0
      0     1     0     0
      0     0     1     0
      0     0     0     1

Функция rand () создает массив равномерно распределенных случайных чисел по (0,1) —

Например —

Live Demo

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 () создает массив магических квадратов. Требуется исключительный аргумент, который дает размер квадрата. Аргумент должен быть скаляром, большим или равным 3.

Live Demo

magic(4)

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

ans =
   16     2     3    13
   5    11    10     8
   9     7     6    12
   4    14    15     1

Многомерные массивы

В MATLAB массив, имеющий более двух измерений, называется многомерным массивом. Многомерные массивы в MATLAB являются расширением нормальной двумерной матрицы.

Обычно для создания многомерного массива мы сначала создаем двумерный массив и расширяем его.

Например, давайте создадим двумерный массив a.

Live Demo

a = [7 9 5; 6 1 9; 4 3 2]

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

a =
   7     9     5
   6     1     9
   4     3     2

Массив a является массивом 3 на 3; мы можем добавить третье измерение к, предоставив такие значения, как —

Live Demo

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 ().

Например,

Live Demo

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 — это размер, по которому объединяются массивы.

B — новый созданный массив

A1 , A2 , … массивы, которые будут объединены

dim — это размер, по которому объединяются массивы.

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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 Количество размеров массива
numel Количество элементов массива
размер Размеры массива
iscolumn Определяет, является ли ввод вектором столбца
пустой Определяет, является ли массив пустым
ismatrix Определяет, является ли ввод матричным
isrow Определяет, является ли ввод вектором строки
isscalar Определяет, является ли вход скалярным
isvector Определяет, является ли входной вектор
blkdiag Создает блочную диагональную матрицу из входных аргументов.
circshift Смещает массив по кругу
ctranspose Комплексное сопряженное транспонирование
диаг Диагональные матрицы и диагонали матрицы
flipdim Переворачивает массив по указанному измерению
fliplr Отразить матрицу слева направо
flipud Переворачивает матрицу вверх-вниз
ipermute Инвертирует перестановочные размеры массива ND
переставлять Переставляет размеры массива ND
repmat Реплики и массив плиток
перекроить Перекраивает массив
rot90 Поворот матрицы на 90 градусов
shiftdim Смещает размеры
issorted Определяет, находятся ли заданные элементы в отсортированном порядке
Сортировать Сортирует элементы массива в порядке возрастания или убывания
sortrows Сортирует строки в порядке возрастания
выжимать Удаляет одиночные размеры
транспонировать транспонировать
векторизовать Векторизованное выражение

Примеры

Следующие примеры иллюстрируют некоторые из функций, упомянутых выше.

Длина, Размер и Количество элементов —

Создайте файл сценария и введите в него следующий код —

Live Demo

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

Круговое смещение элементов массива —

Создайте файл сценария и введите в него следующий код —

Live Demo

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

Сортировка массивов

Создайте файл сценария и введите в него следующий код —

Live Demo

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 Array

Массивы ячеек — это массивы индексированных ячеек, где каждая ячейка может хранить массив разных измерений и типов данных.

Функция cell используется для создания массива cell. Синтаксис для функции ячейки —

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

Куда,

  • С — массив ячеек;

  • dim — скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;

  • dim1, …, dimN — скалярные целые числа, которые определяют размеры C;

  • obj является одним из следующих —

    • Массив или объект Java
    • .NET массив типа System.String или System.Object

С — массив ячеек;

dim — скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;

dim1, …, dimN — скалярные целые числа, которые определяют размеры C;

obj является одним из следующих —

пример

Создайте файл сценария и введите в него следующий код —

Live Demo

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
}

Доступ к данным в массивах ячеек

Существует два способа обращения к элементам массива ячеек:

  • Заключение индексов в первую скобку () для ссылки на наборы ячеек
  • Заключение индексов в фигурные скобки {} для ссылки на данные в отдельных ячейках

Когда вы заключаете индексы в первую скобку, это относится к набору ячеек.

Индексы массива ячеек в гладких скобках относятся к наборам ячеек.

Например —

Live Demo

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
}

Вы также можете получить доступ к содержимому ячеек путем индексации с помощью фигурных скобок.

Например —

Live Demo

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

MATLAB выполнит приведенный выше оператор и вернет следующий результат —