Топ питань
Часова шкала
Чат
Перспективи

Згортка (математичний аналіз)

З Вікіпедії, вільної енциклопедії

Remove ads

Зго́ртка (англ. convolution) — математична операція двох функцій та , що дозволяє отримати третю функцію:

Thumb
Згортка двох квадратних імпульсів: результатом є імпульс трикутної форми. Одна з функцій (в даному випадку g) спочатку відображається черезз і тоді зсувається на t, результатом є . Площа під кривою, що є добутком цих функцій і є згорткою по t. Горизонтальна вісь це для f і g, і t для
Thumb
Згортка квадратного імпульсу (вхідний сигнал) з імпульсом відповіді в RC колі для отримання кривої вихідного сигналу. Інтеграл добутку — це площа жовтої ділянки.

Основною властивістю згортки є те, що фур'є-образ згортки пропорційний добутку фур'є-образів функцій.

Remove ads

Згортка на групах

Нехай  група Лі, оснащена мірою Хаара , і  — дві функції, визначенні на . Тоді їх згорткою називається функція

.
Remove ads

Властивості

  • Правило диференціювання:

де означає похідну функції .

де означає перетворення Фур'є функції.

Якщо є матрицею дискретного перетворення Фур'є, то

,

де  — символ торцевого добутку матриць[1][2][3][4][5], означає добуток Кронекера,  — символ добутку Адамара (тотожність є розвитком властивості відлікового скетча[6]).

Remove ads

Застосування

Thumb
Гаусове розмиття може використовуватись щоб отримати гладке монохромне зображення з півтонового друку

Згортки та пов'язані операції знаходять багато застосувань в науці, інженерії та математиці.

  • В обробці зображень:
Згортка в обробці зображень використовується в багатьох фільтрах, наприклад для розмиття, чи виявлення контурів.
В фотографії, несфокусована фотографія є згорткою чіткого зображення з функцією лінзи. Фотографічний термін для цього поняття Боке.

Приклад програми

Нижче наведено приклад згортки, написаний на С++ :

/*
 * Розмір вихідної послідовності рівний 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; ++i)
    {
        for (int j = 0; j < M; ++j)
        {
            result[i + j] += x[i] * h[j];
        }
    }

    return result;
}
Remove ads

Див. також

Примітки

Література

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads