A szekvenciakonvolúció két numerikus sorozat lineáris transzformációja . A konvolúció eredménye egy sorozat, amelynek elemeit úgy kapjuk meg, hogy az eredeti sorozatok elemeit úgy szorozzuk és összegezzük, hogy az egyik sorozat tagjait növekvő, a másiké pedig csökkenő indexekkel vegyük (ami arra szolgál e művelet elfogadott elnevezésének alapjaként). Léteznek lineáris és ciklikus konvolúciók, amelyeket véges, illetve periodikus sorozatokhoz használunk.
A és sorozatok konvolúcióját jelöljük .
A szekvenciális hajtogatás a funkciós hajtogatás speciális esete . A konvolúció szintén szorosan összefügg a keresztkorrelációval .
A hagyományos kötegek a következők:
Tekintsük az egyes konvolúciótípusok kiszámításának szabályait és sorrendjét.
Adjunk meg két numerikus sorozatot:
Ezen sorozatok lineáris konvolúciójának kiszámításához a következő lépéseket kell végrehajtania:
A fent leírt műveletek végrehajtása eredményeként a és sorozatok lineáris konvolúcióját kapjuk , amelynek elemeit két képlet egyikével számítjuk ki:
vagy
Itt feltételezzük, hogy - esetén a megfelelő sorozat elemei egyenlők nullával.
A képletek ekvivalenciáját és ennek eredményeként a konvolúciós művelet kommutativitását úgy ellenőrizheti , hogy egyszerűen lecseréli az indexeket valamelyik képletben.
Tekintsünk most két azonos hosszúságú numerikus sorozatot :
A periodikus körkörös konvolúció eléréséhez el kell képzelni, hogy ezek a sorozatok két körön helyezkednek el, amelyek közül az egyik a másik belsejében van. Ezen sorozatok értékei egyenlő távolságra vannak egymástól. A körkörös konvolúció minden egyes értékének megszerzéséhez el kell képzelni, hogy az egyik sorozat a másikhoz képest körben mozog az óramutató járásával megegyező irányban. Először vegye a forgó sorozat első értékét, szorozza meg egymás után egy másik sorozat értékeivel, és összegezze a szorzások eredményeit, és kapja meg a kimeneti sorozat első értékét . Ezután megismételjük ezeket a műveleteket a sorozat minden egyes értékére, amely a másikhoz képest forog. A kimeneti sorozat elemeinek száma .
Más szóval, a ciklikus konvolúció elemeit a képlet számítja ki
ahol .
A kapott sorozat ekvivalens két periodikus jel, azaz a sorozatok konvolúciójával, és az és a képletekkel mindenkire meghatározottnak tekinthető .
Az aperiodikus konvolúció eléréséhez ugyanazokat a műveleteket hajtjuk végre, mint a körkörös konvolúció esetén, de a sorozatok eltérő számú elemet tartalmazhatnak (például és ), és azokat nullákkal kell kitölteni a számhoz . Az ilyen típusú konvolúció végrehajtása során a körkörös átfedés hatása, amely körkörös konvolúciónál jelentkezik, megszűnik. Ez egy alternatív módszer a lineáris konvolúció kiszámítására.
A fent leírt megközelítés lehetővé teszi a lineáris és ciklikus konvolúciók számítása közötti kapcsolat létrehozását. Ehhez a ciklikus konvolúció elemeinek képletében az összeget elosztjuk kettővel, az és eseteknek megfelelően :
Feltételezve, hogy most az első összegben van , és a második összegben at , megváltoztathatjuk az összegzési határokat, és összefüggést kaphatunk a lineáris és ciklikus konvolúciók között a következő formában:
A lineáris konvolúció akkor számítható ciklikusnak, ha a képlet második tagja egyenlő nullával, vagyis az összes és a szorzata nullával egyenlő . Ennek a feltételnek a teljesülése érdekében kiválaszthatjuk a ciklikus konvolúció hosszát úgy, hogy az ne legyen kisebb, mint , miközben a bemeneti sorozatokat nullákkal töltjük fel.
A diszkrét Fourier-transzformáció segítségével történő konvolúció kiszámításához mindkét bemeneti sorozatot nullákkal kell feltölteni, hogy az elemek száma ezekben a sorozatokban egyenlő legyen . Ezután az egyes sorozatok közvetlen Fourier-transzformációját kell végrehajtani. Ezután a transzformált sorozatokat elemenként megszorozzuk, majd végrehajtjuk a szorzási eredmény inverz transzformációját.
A konvolúció leírt módon történő kiszámítása a konvolúciós tételnek köszönhetően megvalósítható.
Egy lineáris, ciklikus vagy konvolúció számításának helyességének ellenőrzéséhez a Fourier-transzformáció segítségével a másik két konvolúciótípus egyikét is kiszámíthatja, mivel a kimeneti sorozatoknak egyenlőnek kell lenniük, ha a bemeneti sorozatok azonosak.
A konvolúció kiszámítása műveleteket igényel . Ez a szám jelentősen csökkenthető a konvolúció különböző gyors algoritmusokkal történő kiszámításával.
Leggyakrabban a műveletek számának csökkentése érdekében a konvolúciót két Fourier-transzformáció segítségével számítják ki, amelyek mindegyikét gyors algoritmusokkal számítják ki . Ez a konvolúciós művelet számítási bonyolultságát -ra csökkenti .
Legyen két diszkrét komplex jel és legyen megadva térben . Ezeknek a jeleknek a konvolúcióját a következőképpen definiáljuk
Állítsuk be a tér méretének csökkentésének műveletét is úgy, hogy a jelet as -on mérjük vagy összegezzük
Tétel. A tér egy tetszőleges dimenziója esetén a konvolúció eredménye, amelyet az összegzés követ , ami megegyezik a jelek feletti előzetes összegzéssel és az azt követő konvolúcióval: . [egy]
Az alábbiakban egy példa a lineáris konvolúció megvalósítására, C++ nyelven írva :
/* * A kimeneti sorozat mérete M + N - 1 */ vektor < double > conv ( const vektor < double >& x , const vektor < double >& h ) { if (( x . méret () == 0 ) && ( h . méret () == 0 )) { visszatérési vektor < double > (); } vektor < double > a ; vektor < double > b ; if ( x .size () < h .size ( ) ) { a = x _ b = h _ } másik { a = h _ b = x ; } vektor < double > eredmény ( a . méret () + b . méret () - 1 , 0 ); for ( méret_t k = 0 ; k < a . méret (); k ++ ) { for ( méret_t l = 0 ; l < b . méret (); l ++ ) { eredmény [ l + k ] += a [ k ] * b [ l ]; } } eredmény visszaadása ; }