Let's say I want to convolve a Gaussian function

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

with an exponential broadening function

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?

  • 2
    $\begingroup$ Cyclic convolution is equivalent to having a periodic function. So you simply need to define ExpBroad as periodic. $\endgroup$ – 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, 
           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: enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.