Матрицы и массивы

MATLAB является сокращением от "матричной лаборатории". В то время как другие языки программирования в основном работают с числами по одному, MATLAB® разработан, чтобы работать, в основном, с целыми матрицами и массивами.

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

Создание массивов

Чтобы создать массив из четырех элементов в одной строке, разделите элементы либо запятой (,) либо пробелом.

a = [1 2 3 4]
a = 1×4

     1     2     3     4

Этот тип массива является вектором - строкой.

Чтобы создать матрицу, которая имеет несколько строк, разделите строки точками с запятой.

a = [1 2 3; 4 5 6; 7 8 10]
a = 3×3

     1     2     3
     4     5     6
     7     8    10

Другой способ создать матрицу состоит в том, чтобы использовать функцию, такую как ones, zeros или rand. Например, создайте вектор - столбец размером 5 на 1 из нулей.

z = zeros(5,1)
z = 5×1

     0
     0
     0
     0
     0

Матричные операции и операции над массивами

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

a + 10
ans = 3×3

    11    12    13
    14    15    16
    17    18    20

sin(a)
ans = 3×3

    0.8415    0.9093    0.1411
   -0.7568   -0.9589   -0.2794
    0.6570    0.9894   -0.5440

Чтобы транспонировать матрицу, используйте одинарную кавычку ('):

a'
ans = 3×3

     1     4     7
     2     5     8
     3     6    10

Можно выполнить стандартное умножение матриц, которое вычисляет скалярные произведения между строками и столбцами, с помощью оператора *. Например, подтвердите, что матрица, умноженная на её обратную матрицу, возвращает единичную матрицу:

p = a*inv(a)
p = 3×3

    1.0000         0   -0.0000
         0    1.0000         0
         0         0    1.0000

Заметьте, что p не является матрицей целочисленных значений. MATLAB хранит числа как значения с плавающей точкой, и арифметические операции чувствительны к небольшим различиям между фактическим значением и его представлением с плавающей точкой. Можно отобразить больше десятичных цифр с помощью команды format:

format long
p = a*inv(a)
p = 3×3

   1.000000000000000                   0  -0.000000000000000
                   0   1.000000000000000                   0
                   0                   0   0.999999999999998

Сбросьте отображение к использованию более короткого формата

format short

формат влияет только на отображение чисел, не на то, как MATLAB вычисляет или сохраняет их.

Чтобы выполнить поэлементное умножение, а не умножение матриц, используйте оператор .*:

p = a.*a
p = 3×3

     1     4     9
    16    25    36
    49    64   100

Для каждого из матричных операторов умножения, деления и возведения в степень существует соответствующий оператор для поэлементных операций. Например, возведите каждый элемент a в третью степень:

a.^3
ans = 3×3

           1           8          27
          64         125         216
         343         512        1000

Конкатенация

Конкатенация является процессом слияния массивов для создания бОльших массивов. На самом деле вы сделали свой первый массив путем конкатенации его отдельных элементов. Пара квадратных скобок [] является оператором конкатенации.

A = [a,a]
A = 3×6

     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8    10     7     8    10

Конкатенация массивов друг с другом, с использованием запятых, называется горизонтальной конкатенацией. Каждый массив должен иметь одинаковое число строк. Точно так же, когда массивы имеют одинаковое число столбцов, можно конкатенировать вертикально с использованием точки с запятой.

A = [a; a]
A = 6×3

     1     2     3
     4     5     6
     7     8    10
     1     2     3
     4     5     6
     7     8    10

Комплексные числа

Комплексные числа имеют и действительные и мнимые части, где мнимая единица является квадратным корнем из -1.

sqrt(-1)
ans = 0.0000 + 1.0000i

Чтобы представлять мнимую часть комплексных чисел, используйте или i или j.

c = [3+4i, 4+3j; -i, 10j]
c = 2×2 complex

   3.0000 + 4.0000i   4.0000 + 3.0000i
   0.0000 - 1.0000i   0.0000 +10.0000i