Что делает этот калькулятор
Калькулятор круговой свёртки вычисляет круговую (циклическую) свёртку двух дискретных последовательностей — одну из базовых операций в цифровой обработке сигналов (ЦОС). В отличие от линейной свёртки, круговая «замыкает» последовательности в кольцо с фиксированным периодом N. Именно это происходит, когда вы перемножаете дискретные преобразования Фурье (ДПФ) двух сигналов и выполняете обратное преобразование. Введите свои последовательности — и инструмент сразу выдаст результирующую последовательность, а заодно её максимальное и минимальное значения для быстрого анализа.
Исходные данные
- Первая последовательность: входной сигнал x, числа через запятую (например,
1, 2, 3, 4). - Вторая последовательность: второй сигнал h, тоже через запятую (например,
1, 1, 1).
Если последовательности имеют разную длину, калькулятор дополняет более короткую нулями до N — длины более длинной последовательности. После этого обе считаются периодическими с периодом N.
Формула
Круговая свёртка определяется так:
$$y[n] = \sum_{k=0}^{N-1} x[k] \cdot h\big[(n - k)\bmod N\big]$$
Ключевое отличие от линейной свёртки — индекс по модулю N. Когда выражение (n − k) становится отрицательным, индекс «оборачивается» к концу последовательности, а не даёт ноль. Именно поэтому результат всегда содержит ровно N отсчётов — столько же, сколько в более длинном входном сигнале.
Разбор примера
Пусть x = [1, 2, 3, 4] и h = [1, 1, 1, 1] (обе длиной N = 4). Считаем каждый отсчёт результата:
- \(y[0] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10\)
- \(y[1] = 1\cdot 1 + 2\cdot 1 + 3\cdot 1 + 4\cdot 1 = 10\)
- \(y[2] = 10\), \(y[3] = 10\)
Результат: [10, 10, 10, 10], максимум 10 и минимум 10. Поскольку h состоит из одних единиц, каждый отсчёт равен сумме всех элементов x — удобная проверка на здравый смысл.
Частые вопросы
Чем это отличается от линейной свёртки? Линейная свёртка даёт последовательность длиной (len(x) + len(h) − 1) без «заворачивания». Круговая свёртка сохраняет длину N и возвращает «переполнение» в начало — именно так работает фильтрация на основе ДПФ.
Что делать, если последовательности разной длины? Более короткую дополняют нулями до длины N более длинной, поэтому перед свёрткой обе оказываются выровненными.
Можно ли использовать отрицательные или дробные числа? Да. Значения распознаются как десятичные дроби, поэтому записи вроде -1.5, 0.25, 3 работают без проблем.