exponenta event banner

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

В этом примере показаны основные методы и функции работы с матрицами на языке 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 для решения уравнения, A * x = b. Для этого используется оператор\( обратная косая черта).

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 легко обращается к комплексным числам в своих расчетах.

Связанные темы