xcov
Взаимная ковариация.
| Библиотека |
|
Синтаксис
Вызов функции
-
с = xcov(x,y)— возвращает взаимную ковариацию двух дискретных последовательностей. Взаимная ковариация измеряет сходство между векторомxи сдвинутыми (запаздывающими) копиями вектораyкак функцию задержки. Еслиxиyимеют разную длину, функция добавляет нули в конец более короткого вектора, чтобы он имел ту же длину, что и другой.
Аргументы
Входные аргументы
#
x —
входной массив
вектор | матрица | многомерный массив
Details
Входной массив, заданный как вектор, матрица или многомерный массив. Если x — многомерный массив, то функция xcov работает по столбцам по всем измерениям и возвращает каждую автоковариацию и взаимную ковариацию как столбцы матрицы.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
#
y —
входной массив
вектор
Details
Входной массив, заданный как вектор.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
#
maxlag —
максимальная задержка
целочисленный скаляр
Details
Максимальная задержка, заданная как целочисленный скаляр. Если аргумент maxlag задан, возвращаемая последовательность взаимной ковариации находится в диапазоне от −maxlag до maxlag. Если аргумент maxlag не задан, по умолчанию диапазон отставания равен , где — большее из значений длин входных аргументов x и y.
| Типы данных |
|
#
scaleopt —
параметр нормализации
"none" (по умолчанию) | "biased" | "unbiased" | "normalized" | "coeff"
Details
Параметр нормализации, заданный одним из следующих способов:
-
"none"— необработанная, немасштабированная взаимная ковариация. Значение"none"— единственный допустимый вариант, если входные аргументыxиyимеют разную длину. -
"biased"— смещенная оценка взаимной ковариации. -
"unbiased"— несмещенная оценка взаимной ковариации. -
"normalized"или"coeff"— нормализует последовательность таким образом, чтобы автоковариации при нулевой задержке были равны1.
Выходные аргументы
#
с —
взаимная ковариация или автоковариация
вектор | матрица
Details
Взаимная ковариация или автоковариация, возвращаемая в виде вектора или матрицы.
Если x — матрица размером на , то xcov(x) возвращает матрицу размером на с автоковариациями и взаимными ковариациями столбцов x. Если аргумент maxlag задан, то выходной аргумент c имеет размер на .
Например, если S имеет три столбца: , то результат операции c = xcov(S) будет организован следующим образом:
#
lags —
индексы задержек
вектор
Details
Индексы задержек, возвращаемые в виде вектора.
Примеры
Взаимная ковариация двух случайных векторов
Details
Создадим вектор случайных чисел x и вектор y, равный вектору x, сдвинутому на 3 элемента вправо. Вычислим и построим график оцененной взаимной ковариации x и y. Наибольший всплеск наблюдается при значении задержки, когда элементы x и y точно совпадают (−3).
import EngeeDSP.Functions: xcov
using Random
Random.seed!(123)
x = rand(20, 1)
y = circshift(x, 3)
c, lags = xcov(x, y)
plot(vec(lags), c,
seriestype = :stem, marker = :circle,
legend = false)
Автоковариация случайного вектора
Details
Создадим случайный вектор размером 20 на 1, затем вычислим и построим график оцененной автоковариации. Наибольший всплеск наблюдается при нулевой задержке, когда вектор в точности равен самому себе.
import EngeeDSP.Functions: xcov
using Random
Random.seed!(123)
x = rand(20, 1)
c, lags = xcov(x)
plot(vec(lags), c,
seriestype = :stem, marker = :circle,
legend = false)
Нормализованная автоковариация шума
Details
Вычислим и построим график оцененной автоковариации белого гауссовского шума для . Нормализуем последовательность так, чтобы она была равна единице при нулевой задержке.
import EngeeDSP.Functions: xcov
using Random
Random.seed!(123)
x = rand(1000, 1)
maxlag = 10
c, lags = xcov(x, maxlag, "normalized")
plot(vec(lags), c,
seriestype = :stem, marker = :circle,
legend = false)
Смещенная взаимная ковариация двух сдвинутых сигналов
Details
Создадим сигнал, состоящий из двух сигналов, сдвинутых друг относительно друга по кругу на 50 отсчетов.
using Random
Random.seed!(123)
shft = 50
s1 = rand(150, 1)
s2 = circshift(s1, [shft 0])
x = [s1 s2]
Вычислим и построим график смещенных оценок последовательностей автоковариации и взаимной ковариации. Выходная матрица c организована в виде четырех векторов-столбцов таких, что . Элемент имеет максимумы в точках −50 и +100, а — максимумы в точках +50 и −100 в результате кругового сдвига.
import EngeeDSP.Functions: xcov
c, lags = xcov(x, "biased")
plot(vec(lags), c,
label = ["c_s1s1" "c_s1s2" "c_s2s1" "c_s2s2"])
Дополнительно
Взаимная ковариация и автоковариация
Details
Функция xcov вычисляет среднее значение своих входных данных, вычитает это среднее значение, а затем вызывает функцию xcorr.
Результат работы функции xcov можно интерпретировать как оценку ковариации между двумя случайными последовательностями или как детерминированную ковариацию между двумя детерминированными сигналами.
Истинная последовательность взаимной ковариации двух совместно стационарных случайных процессов и представляет собой взаимную корреляцию центрированных последовательностей,
где и — средние значения двух стационарных случайных процессов, звездочка обозначает комплексное сопряжение, — оператор математического ожидания. Функция xcov может только оценить последовательность, поскольку на практике доступен только конечный сегмент одной реализации случайного процесса бесконечной длины.
По умолчанию функция xcov вычисляет необработанные ковариации без нормализации:
Выходной вектор c имеет элементы, заданные формулой
Для получения корректной оценки ковариационная функция требует нормализации. Вы можете управлять нормализацией ковариации, используя входной аргумент scaleopt.
Литература
-
Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2nd Edition. New York: McGraw-Hill, 1996.
-
Larsen, Jan. Correlation Functions and Power Spectra. November, 2009. https://www2.imm.dtu.dk/pubdb/edoc/imm4932.pdf