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

В этом примере показаны основные методы и функции для работы с матрицами на языке MATLAB ®.

Сначала создадим простой вектор с 9 элементами a.

a = [1 2 3 4 6 4 3 4 5]
a = 1×9

     1     2     3     4     6     4     3     4     5

Теперь добавим 2 к каждому элементу нашего вектора, a, и сохраните результат в новом векторе.

Заметьте, что MATLAB не требует специальной обработки вектора или матричной математики.

b = a + 2
b = 1×9

     3     4     5     6     8     6     5     6     7

Создание графиков в MATLAB так же просто, как и одна команда. Постройте график результата наших векторных сложений с линиями сетки.

plot(b)
grid on

Figure contains an axes. The axes contains an object of type line.

MATLAB может создавать и другие типы графиков с подписями по осям.

bar(b)
xlabel('Sample #')
ylabel('Pounds')

Figure contains an axes. The axes contains an object of type bar.

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

plot(b,'*')
axis([0 10 0 10])

Figure contains an axes. The axes contains an object of type line.

Одна из областей, в которой MATLAB превосходит, является матричным расчетом.

Создание матрицы так же легко, как и создание вектора, с помощью точек с запятой (;), чтобы разделить строки матрицы.

A = [1 2 0; 2 5 -1; 4 10 -1]
A = 3×3

     1     2     0
     2     5    -1
     4    10    -1

Мы можем легко найти транспонирование матрицы A.

B = A'
B = 3×3

     1     2     4
     2     5    10
     0    -1    -1

Теперь давайте умножим эти две матрицы вместе.

Еще раз обратите внимание, что MATLAB не требует, чтобы вы имели дело с матрицами как с набором чисел. MATLAB знает, когда вы имеете дело с матрицами, и корректирует ваши вычисления соответственно.

C = A * B
C = 3×3

     5    12    24
    12    30    59
    24    59   117

Вместо умножения матрицы мы можем умножить соответствующие элементы двух матриц или векторов, используя оператор. *

C = A .* B
C = 3×3

     1     4     0
     4    25   -10
     0   -10     1

Давайте будем использовать матрицу А, чтобы решить уравнение, A * x = b. Мы делаем это с помощью оператора\( backslash).

b = [1;3;5]
b = 3×1

     1
     3
     5

x = A\b
x = 3×1

     1
     0
    -1

Теперь мы можем показать, что A * x равно b.

r = A*x - b
r = 3×1

     0
     0
     0

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

Существуют функции для получения собственных значений...

eig(A)
ans = 3×1

    3.7321
    0.2679
    1.0000

... а также сингулярные значения.

svd(A)
ans = 3×1

   12.3171
    0.5149
    0.1577

Функция «poly» генерирует вектор, содержащий коэффициенты характеристического полинома.

Характеристический полином матрицы A является

det(λI-A)

p = round(poly(A))
p = 1×4

     1    -5     5    -1

Мы можем легко найти корни полинома, используя roots функция.

Это на самом деле собственные значения исходной матрицы.

roots(p)
ans = 3×1

    3.7321
    1.0000
    0.2679

MATLAB имеет много приложений, помимо только матричных расчетов.

Чтобы свернуть два вектора...

q = conv(p,p)
q = 1×7

     1   -10    35   -52    35   -10     1

... или повторите свертку и постройте график результата.

r = conv(p,q)
r = 1×10

     1   -15    90  -278   480  -480   278   -90    15    -1

plot(r);

Figure contains an axes. The axes contains an object of type line.

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

whos
  Name      Size            Bytes  Class     Attributes

  A         3x3                72  double              
  B         3x3                72  double              
  C         3x3                72  double              
  a         1x9                72  double              
  ans       3x1                24  double              
  b         3x1                24  double              
  p         1x4                32  double              
  q         1x7                56  double              
  r         1x10               80  double              
  x         3x1                24  double              

Вы можете получить значение конкретной переменной, введя ее имя.

A
A = 3×3

     1     2     0
     2     5    -1
     4    10    -1

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

Если вы не назначаете переменную, чтобы сохранить результат операции, результат сохраняется во временной переменной, называемой ans.

sqrt(-1)
ans = 0.0000 + 1.0000i

Как видим, MATLAB легко занимается комплексными числами в своих вычислениях.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте