# Is there a way to do a cyclic convolution analytically in Mathematica?

Let's say I want to convolve a Gaussian function

Pulse[t_] = Exp[-(t - Mid)^2/(2 sig^2)];


ExpBroad[t_] = time^-1 Exp[-t/tau] UnitStep[t];


I can do this analytically by using the Convolve function, or I can turn them into discrete lists and use ListConvolve.

For ListConvolve I can compute the cyclic convolution:

Conv = ListConvolve[Pulselist, Explist, 1]


by using the option 1.

Is there an analog for this analytically?

• Cyclic convolution is equivalent to having a periodic function. So you simply need to define ExpBroad as periodic. – Szabolcs Mar 18 '15 at 16:14

First, I assume you have a typo with time^-1 and that it should be 1/\[Tau]. Second, let me strongly recommend you never ever use variables that start with a capital, lest you inadvertently invoke a function.

myPulse[t_, μ_, σ_] := Exp[-(t - μ)^2/(2 σ^2)];

myExpBroad[t_, τ_] := 1/τ Exp[-t/τ] UnitStep[t];

Assuming[τ > 0,
Integrate[
myPulse[t, μ, σ] myExpBroad[t - tt, τ],
{tt, -∞, +∞}]
]


$e^{-\frac{(t-\mu )^2}{2 \sigma ^2}}$

ListConvolve can be used to solve the cyclic convolution(循环卷积). Principal value interval of the cyclic convolution is equal to

   CyclicConvolution[lis1_, lis2_] := ListConvolve[lis1, lis2, {1, 1}]
CyclicConvolution[{1, 2, 0, 1}, {2, 2, 1, 1}]


{6, 7, 6, 5}

If you want to solve this in hand,you can use the following approach: