Функции > Векторы и матрицы > Другие функции для работы с массивами > Свертка и взаимная корреляция
  
Свертка и взаимная корреляция
Функция convolve(S, K, [BC], [OV]) выполняет свертку двух векторов (1D) или двух матриц (2D) для произвольной фазы.
Свертка во временной области соответствует умножению в частотной области и наоборот и применяется в цифровой фильтрации.
Функция crosscorr(S, K, [BC], [OV]) выполняет взаимную корреляцию двух векторов (1D-корреляция) или двух матриц (2D-корреляция) для произвольной фазы.
Корреляция вычисляется аналогично свертке, но одна из последовательностей обращена во времени и применяется для определения импульсной характеристики системы.
Функция crosscorr может использоваться для вычисления корреляции изображений.
Функция crosscorr заменяет исключенные из употребления функции correl и correl2d.
Аргументы
S — вектор или матрица, представляющие входной сигнал. Элементы массива могут иметь вещественные или комплексные значения.
K — вектор или матрица, представляющие ядро. Элементы массива могут иметь вещественные или комплексные значения.
BC (необязательный) — целое число, определяющее тип вычисляемой свертки, с помощью которого задается способ обработки границ матрицы при вычислении корреляции.Аргумент BC может принимать значение 0 (по умолчанию), 1, 2 или 3, где
0: линейная (или заполнение нулями) — пикселы за границами матрицы считаются имеющими нулевое значение;
1: круговая (или периодическое окружение) — пикселы за границами матрицы считаются периодическим продолжением самой матрицы;
2: отражение — пикселы за границами матрицы считаются отражением матрицы относительно ее краев;
3: продолжение — пикселы за границами матрицы считаются имеющими значение, совпадающее с последним значением внутри матрицы.
OV (необязательный) — целочисленное значение или вектор из двух целых чисел, определяющий, должен ли применяться сдвиг второго сигнала. Он используется, чтобы указать начальное перекрытие строк и столбцов (фазовую корреляцию) матрицы ядра K и матрицы входного сигнала S. Первый элемент вектора задает перекрытие строк, второй — перекрытие столбцов.
Минимальное перекрытие не должно быть меньше 1, максимальное не должно превышать размера ядра.
Для получения корреляции с нулевой фазой перекрытие должно быть задано так, чтобы начальное положение ядра совпадало с его центром (при условии, что ядро является матрицей с нечетным размером). Чтобы добиться этого, параметрам перекрытия необходимо задать значения, равные числам строк и столбцов ядра за вычетом их половин соответственно.
При одномерной взаимной корреляции перекрытие строк задано 1.
При взаимной 2D-корреляции перекрытие по умолчанию задано как:
Row_overlap = K_rows − K_rows/2
Column_overlap = K_columns − K_columns/2