WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Свёртка последовательностей — это результат перемножения элементов двух заданных числовых последовательностей таким образом, что члены одной последовательности берутся с возрастанием индексов, а члены другой — с убыванием (что и служит основанием для принятого названия данной операции).

Свёртка последовательностей — это частный случай свёртки функций.

Свёртка является линейным преобразованием входящих в неё последовательностей.

Свёртку двух заданных последовательностей можно получить, если, сначала, использовать для каждой последовательности дискретное преобразование Фурье (ДПФ), затем перемножить результаты преобразования и произвести обратное дискретное преобразование Фурье (обратное ДПФ). Это важное свойство находит своё широкое применение в цифровой обработке сигналов.

Различают периодическую и линейную свёртки, которые используются для периодических и конечных последовательностей соответственно.

Типы свёрток

К традиционным типам свёрток относятся:

  • линейная свёртка;
  • круговая свёртка (периодическая);
  • круговая свёртка (апериодическая);
  • свёртка с помощью дискретного преобразования Фурье (ДПФ).

Расчёт свёрток

Рассмотрим правила и последовательность расчёта каждого вида свертки.

Расчет линейной свёртки

Для расчёта линейной свертки необходимо выполнить такую последовательность действий:

  • произвести расчёт количества элементов выходной последовательности по формуле:
где:
 — количество элементов в выходной последовательности;
 — количество элементов в первой последовательности;
 — количество элементов во второй последовательности;
  • дополнить нулями обе последовательности так, чтобы количество элементов в этих последовательностях была равна ;
  • симметрично отобразить одну из последовательностей относительно оси ординат;
  • произвести перемножение этих двух последовательностей.

В результате выполнения всех описанных выше операций получим линейную свёртку двух последовательностей.

Расчет периодической круговой свёртки

Для получения круговой свертки (периодической) необходимо представить, что две последовательности располагаются на двух окружностях. Одна окружность находится внутри другой. Значения каждой из этих последовательностей равноудалены друг от друга. Для получения каждого значения круговой свертки необходимо представить, что одна из последовательностей движется по окружности относительно другой по часовой стрелке. К примеру, возьмем первое значение последовательности, которая вращается, последовательно умножим на значения другой последовательности и просуммируем результаты умножений — так получим первое значение выходной последовательности, которое было получено при помощи круговой свертки. Данные действия повторить для каждого значения последовательности, которая вращается относительно другой. Количество элементов в выходной последовательности будет равно количеству элементов последовательности, которая вращается.

Полученная последовательность эквивалентна свёртке двух периодических сигналов.

Расчет апериодической круговой свёртки

Для получения круговой свертки (апериодической) выполняется все те же операции, что и для получения круговой свертки, но при этом увеличить количество элементов до количества . Входные последовательности необходимо дополнить нулями до этого количества. При выполнении данного вида свертки устраняется эффект кругового наложения, который возникает при круговой свёртке.

Выполнение свертки с помощью ДПФ

Для выполнения свертки с помощью дискретного преобразования Фурье необходимо дополнить нулями обе входные последовательности так, чтобы количество элементов в этих последовательностях равнялось . Далее необходимо произвести прямое ДПФ по формуле прямого преобразования Фурье.

Далее производится поочередное умножение элементов первой последовательности с элементами второй последовательности. После производится обратное преобразование по формуле обратного преобразования Фурье, в результате которого получаем свёртку, рассчитанную с помощью ДПФ.

Для проверки правильности расчётов линейной, круговой (апериодической) или свертки с помощью ДПФ можно произвести дополнительно расчёт одной из двух других типов свертки так как выходные последовательности должны быть равны при одинаковых входных последовательностях.

Теорема об уменьшении размерности пространства при свёртке

Теорема. Пусть в пространстве заданы последовательности и , выберем одно произвольное измерение из , тогда результат операции свёртка , с последующим суммированием по есть эквивалентен предварительному суммированию  и с последующей свёрткой . [1]

Пример программы

Ниже приведён пример реализации свертки, написанный на C++:

/*
 * Размер выходной последовательности равен M + N - 1 
 */
double * conv(double * x, int N, double * h, int M)
{
    double * result = new double[N + M - 1];
    memset(result, 0, sizeof(double) * (N + M - 1));

    for (int i = 0; i < N + M - 1; i++)
    {
        for (int j = 0; j < N + M - 1; j++)
        {
            result[i] += x[j] * h[M-1-j]; // Kern_Rich.pdf
        }
    }

    return result;
}

См. также

Примечания

  1. Гришенцев А. Ю., Коробейников А. Г. Понижение размерности пространства при корреляции и свертке цифровых сигналов // Изв. вузов. Приборостроение. : печатный. — 2016. № 3. С. 211—218. ISSN 0021-3454.

Литература

  • Рабинер Л., Гоулд Б. Глава 2. Теория линейных дискретных систем // Теория и применение цифровой обработки сигналов. М.: Мир, 1978. — С. 72—81. — 848 с.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии