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

Этот пример показывает основные методы и функции для работы с матрицами на языке 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 object. The axes object contains an object of type line.

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

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

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

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

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

Figure contains an axes object. The axes object 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. Мы делаем это при помощи \(обратная косая черта) оператор.

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 object. The axes object 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 легко имеет дело с комплексными числами в своих вычислениях.

Похожие темы