4
$\begingroup$

I have asked this at the Math SE also.

Predicating this on the definition of the continuous Fourier Transform preferred by most electrical engineers:

$$ X(f) \triangleq \mathscr{F} \Big\{ x(t) \Big\} \triangleq \int\limits_{-\infty}^{+\infty} x(t) \, e^{-i 2 \pi f t} \ \mathrm{d}t $$

and inverse:

$$ x(t) \triangleq \mathscr{F}^{-1} \Big\{ X(f) \Big\} = \int\limits_{-\infty}^{+\infty} X(f) \, e^{+i 2 \pi f t} \ \mathrm{d}f $$

Even with different signs on $i$, the elegant symmetry between the forward transform and inverse should be clear. And it makes remembering the Duality property, Parseval's theorem easy:

If $X(f) = \mathscr{F} \Big\{ x(t) \Big\}$, then $x(-f) = \mathscr{F} \Big\{ X(t) \Big\}$.

$$ X(0) = \int\limits_{-\infty}^{+\infty} x(t) \ \mathrm{d}t $$

$$ x(0) = \int\limits_{-\infty}^{+\infty} X(f) \ \mathrm{d}f $$

$$ \int\limits_{-\infty}^{+\infty} \Big| x(t) \Big|^2 \ \mathrm{d}t = \int\limits_{-\infty}^{+\infty} \Big| X(f) \Big|^2 \ \mathrm{d}f$$

NO nasty asymmetrical scaling factors to worry about!! (Just remember the $2\pi$ in the exponent.) This is why EE's like this definition of the Fourier Transform.

Given this definition, then the Fourier transform of the gaussian function (exponent scaled as shown) is itself:

$$ \mathscr{F} \Big\{ e^{- \pi t^2} \Big\} = e^{- \pi f^2} $$


So, harmonizing the parameters and symbols, the normalized Gabor "mother wavelet" (with this parameter $\mathcal{F}$) is simply a complex sinusoid with a gaussian "window" or "envelope":

$$\begin{align} w(t) &\triangleq e^{-\pi t^2} \, e^{i 2 \pi \mathcal{F} t } \\ &= e^{\pi (i\mathcal{F})^2} \left(e^{-\pi t^2} \, e^{i 2 \pi \mathcal{F} t } e^{-\pi (i\mathcal{F})^2} \right) \\ &= e^{-\pi \mathcal{F}^2} e^{-\pi (t-i\mathcal{F})^2} \\ \end{align}$$

The Fourier Transform isn't too hard to get:

$$ W(f) = e^{- \pi (f-\mathcal{F})^2} $$

My question is, in the literature, has this been generalized a little more and does this have a name? (Like where can I read about it?)

$$\begin{align} w(t) &\triangleq e^{-\pi t^2} \, e^{i \pi \beta t^2} \, e^{i 2 \pi \mathcal{F} t } \\ &= e^{-\pi (1 - i\beta) t^2} e^{i 2 \pi \mathcal{F} t } \\ &= e^{-\pi (\sqrt{1 - i\beta} \, t)^2} e^{i 2 \pi \mathcal{F} t } \\ &= e^{-\pi \mathcal{F}^2} e^{-\pi (\sqrt{1 - i\beta} \, t - i\mathcal{F})^2} \\ \end{align}$$

This makes this windowed sinusoid, a windowed "chirp" function. We need both the $\beta$ parameter and the $\mathcal{F}$ parameter because the scaling on the width of the window is still normalized to 1.

I believe the Fourier Transform is

$$ W(f) = \frac{1}{\sqrt{1 - i\beta}} \, e^{- \pi (f-\mathcal{F})^2/(1 - i\beta)} $$

This can be generalized one step further by putting in an exponential "ramp" parameter $\lambda$

$$\begin{align} w(t) &\triangleq e^{-\pi t^2} \, e^{i \pi \beta t^2} \, e^{i 2 \pi \mathcal{F} t } e^{2 \pi \lambda t } \\ &= e^{-\pi (1 - i\beta) t^2} e^{i 2 \pi (\mathcal{F}-i\lambda) t } \\ &= e^{-\pi (\sqrt{1 - i\beta} \, t)^2} e^{i 2 \pi (\mathcal{F}-i\lambda) t } \\ &= e^{-\pi \mathcal{F}^2} e^{-\pi (\sqrt{1 - i\beta} \, t - i(\mathcal{F}-i\lambda))^2} \\ &= e^{-\pi \mathcal{F}^2} e^{-\pi (\sqrt{1 - i\beta} \, t - i\mathcal{F}-\lambda))^2} \\ \end{align}$$

And it looks like the Fourier Transform is

$$ W(f) = \frac{1}{\sqrt{1 - i\beta}} \, e^{- \pi (f-\mathcal{F}+i\lambda)^2/(1 - i\beta)} $$

Does this generalization exist in the lit somewhere and, if so, can I read about it without a pay-wall?


Also, it appears to me that, in general, we can say that

$$ \mathscr{F} \Big\{ e^{a t^2 + b t + c} \Big\} = e^{A f^2 + B f + C} $$

where the constants $A$, $B$, and $C$ can be explicitly mapped from $a$, $b$, and $c$. It appears to me that the mapping is:

$$\begin{align} A &= \frac{\pi^2}{a} \\ B &= i \frac{\pi b}{a} \\ C &= c - \frac{b^2}{4a} - \tfrac{1}{2}\log\left(-\frac{a}{\pi}\right) \\ \end{align}$$

and the inverse mapping (which should be self-similar) is:

$$\begin{align} a &= \frac{\pi^2}{A} \\ b &= -i \frac{\pi B}{A} \\ c &= C - \frac{B^2}{4A} - \tfrac{1}{2}\log\left(-\frac{A}{\pi}\right) \\ \end{align}$$

Looks like $\Re\{a\}<0$ and $\Re\{A\}<0$ for the integrals to converge and for the $\log(\cdot)$ to be real and finite in the mapping.

This appears to be true for quadratics in the exponent. Is it also true for higher-order polynomials in the exponent? Does this also exist in the lit somewhere?

$\endgroup$
3
  • $\begingroup$ Chirplet transform maybe? $\endgroup$ May 1, 2018 at 10:46
  • $\begingroup$ yup @geometrikal. that's what the math guys told me. it funny but i hadn't heard the term "chirplet" before this. $\endgroup$ May 1, 2018 at 18:03
  • $\begingroup$ "the normalized Gabor" -> "the simplified normalized Gabor". Missing mean-corrective term. $\endgroup$ May 16 at 18:36

1 Answer 1

1
$\begingroup$

You've re-invented chirplets:

from

This is identical to your second $w(t)$ (minus parameterization formulation), but not third, which introduces asymmetric windowing. So, I changed the notation $w(t)$ I dislike in the third $w(t)$ into

$$ w(t) \triangleq e^{-\pi t^2} \, e^{i \pi \beta t^2} \, e^{i 2 \pi \xi t } e^{2 \pi \gamma t } $$

$\xi$ because the other guy looks like Fourier transform, and $\gamma$ because the other guy won't dine with a snake. Another problem is that, you claim the function's unity-normed, while it's not, and the Fourier transform also fails to center in time domain. It's also not zero-mean, so not "Gabor" but "simplified Gabor", but as long as we avoid certain mother wavelet parameters, we're okay. Except not quite because we'll still get fucked up by discretization for yet more params.

Fixing all these problems manually except extrema discretization, I used the snake to generate a filterbank:

That SSQ doesn't get botched up means we're doing good with time-domain phase. More examples:

Chirpy chirp slopes are working as intended. The most photogenic time-domain rampirplet I could make is below, but its filterbank sucks:

Now let's take some non-padded CWTs with circular cross-correlation:

That this looks like a normal CWT blows my mind, until I think a little. Now let's check stuff with interferences, with more wavelets, and vs normal Morlet CWT:

whatever the blasted thing on the left is, assymetry is working. It's certainly curious to check WGN:

Don't ask, I don't know.

It'd be interesting to inspect more asymmetric parameterizations, but discretization is a pain and I didn't bother. Note that here, per assymetry, the precise definition of CWT via cross-correlation rather than convolution matters, otherwise we'd see the slope trends reversed; sharply resolved features are positively sloped, same as the wavelet.

If you seek a head honcho generalization, consult Generalized Morse Wavelets. Its default $\gamma=3$ is very Morlet-like. You can cite this answer as

John Muradeli, 2023. "Chirp"-like generalization of the Gabor or Morlet wavelets. URL: https://dsp.stackexchange.com/a/87859/50076

Code, just the wavelets

I reckon some Fortran blokes never try to run Python cause who wants snake on their computer. Well we've got snake in the cloud.

# https://dsp.stackexchange.com/q/48876/50076
import numpy as np
from numpy.fft import fft, ifft, ifftshift
import matplotlib.pyplot as plt

def W(f, xi=12, gamma=5, beta=5):
    K = 1/np.sqrt(1 - 1j*beta)
    exp = np.exp(-np.pi*(f - xi + 1j*gamma)**2 / (1 - 1j*beta))
    return K * exp

fig, axes = plt.subplots(1, 2, layout='constrained')
psis = []
for mult in np.logspace(np.log10(4), np.log10(2000), 100):
    f = np.linspace(0, 15, 4096*8)*mult
    pf = W(f, xi=1)
    pf /= abs(pf).max()
    pt = ifft(pf)
    pt = np.roll(pt, -np.argmax(pt))
    pf = fft(pt)
    axes[0].plot(abs(pf))
    psis.append(pf)

pt = ifftshift(ifft(psis[40]))
N = len(pt)
axes[1].plot(pt.real)
axes[1].plot(pt.imag)
axes[1].plot(abs(pt), color='k', linestyle='--')
axes[1].set_xlim(N//2-1000, N//2+1000)
axes[1].set_yticks([])
plt.show()
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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