В математике, особенно в линейной алгебры и теории матриц, векторизация матрицы - это линейное преобразование, которое преобразует матрицу в вектор-столбец. В частности, векторизация матрицы A am × n, обозначаемая vec (A), представляет собой вектор-столбец mn × 1, полученный путем наложения столбцов матрицы A друг на друга:
Здесь представляет , а верхний индекс обозначает транспонирование. Векторизация выражает через координаты изоморфизм между ними (т. Е. Матриц и векторов) как векторные пространства.
Например, для матрицы 2 × 2 = векторизация: .
Векторизация часто используется вместе с продуктом Kronecker для выражения умножения матриц как линейного преобразования матриц. В частности,
для матриц A, B и C размеров k × l, l × m и m × n. Например, если (присоединенный эндоморфизм алгебры Ли gl (n, C ) всех матриц размера n × n с комплексными элементами), затем , где - это единичная матрица n × n .
Есть еще две полезные формулировки:
В более общем плане было показано, что векторизация - это самоприсоединение в моноидальной замкнутой структуре любой категории матриц.
Векторизация - это гомоморфизм алгебр из пространства n × n матриц с Произведение Адамара (начальное) на C на его произведение Адамара:
Векторизация - это унитарное преобразование из пространства матриц размера n × n со скалярным произведением Фробениуса (или Гильберта – Шмидта ) в C:
где верхний индекс обозначает сопряженное транспонирование.
Операция векторизации матрицы может быть записанным в виде линейной суммы. Пусть X будет матрицей размера m × n, которую мы хотим векторизовать, и пусть eiбудет i-м каноническим базисным вектором для n-мерного пространства, то есть . Пусть Biбудет блочной матрицей (mn) × m, определенной следующим образом:
Biсостоит из n блочных матриц размером m × m, составленных по столбцам, и все эти матрицы нулевые, за исключением i-й, которая представляет собой единичную матрицу am × m Im.
Тогда векторизованная версия X может быть выражена следующим образом:
Умножение X на eiизвлекает i-й столбец, а умножение на Biпомещает его в нужную позицию в окончательный вектор.
В качестве альтернативы линейная сумма может быть выражена с помощью произведения Кронекера :
Для симметричной матрицы A вектор vec (A) содержит больше информации, чем это строго необходимо, поскольку матрица полностью определяется симметрией вместе с нижним треугольником, то есть n (n + 1) / 2 записей на и ниже главной диагонали . Для таких матриц полувекторизация иногда бывает более полезной, чем векторизация. Полувекторизация, vech (A), симметричной матрицы A размера n × n представляет собой вектор-столбец n (n + 1) / 2 × 1, полученный векторизацией только нижней треугольной части матрицы A:
Например, для матрица 2 × 2 A = , полу-векторизация - vech (A) = .
Существуют уникальные матрицы, преобразующие полу-векторизацию матрицы в ее векторизацию и наоборот. называемые, соответственно, матрицей дублирования и матрицей исключения.
Языки программирования, реализующие матрицы, могут иметь простые средства для векторизации. В Matlab / GNU Octave матрица A
может быть векторизована с помощью A (:)
. GNU Octave также позволяет векторизацию и полу-векторизацию с помощью vec (A)
и vech (A)
соответственно. Джулия также имеет функцию vec (A)
. В массивах Python NumPy реализован метод 'flatten', в то время как в R желаемый эффект может быть достигнут с помощью c ()
или as.vector ()
функции. В R функция vec ()
пакета 'ks' допускает векторизацию, а функция vech ()
, реализованная в обоих пакетах 'ks' и 'sn', позволяет половину -векторизация.