Clear Filters
Clear Filters

Triple correlation and bispectrum

6 views (last 30 days)
Georgiy
Georgiy on 11 Nov 2015
Edited: timothy petersen on 30 Aug 2022
Hello,
I have a three 1D signals which I want to triple cross-correlate. The triple cross correlation is:
Applying the convolution theorem, I can calculate this by FFT each signal, multiplying, and inverse FFT back.
where
So the FFT for g and h functions is just:
G = fft(g);
H = fft(h);
but how do I find the FFT of f function? It's not just fft(f), right?
Thanks!
  1 Comment
timothy petersen
timothy petersen on 26 Aug 2022
Edited: timothy petersen on 30 Aug 2022
The FFT of f function that you seek (i.e. F) is two-dimensional in frequency space, in a trivial manner, even though your spatial function f is one-dimensional. To compute the desired F* using ffts, note that the second fourier frequency f2 is a phase ramp applied to f before the f1-frequency fft, which can be interpreted using the Fourier shift theorem. F* can then be tconstructed by a single initial fft on the function f, followed by a sequence of circshifts to replicate the effect of the f2 phase ramp. Rather than loop through a sequence of circshifts, it is faster to note that the structure of F looks like a Toeplitz matrix. Hence this psuedo-code ought to do the trick:
temp = fft(arr);
Fstar = conj(fliplr(toeplitz([temp(1) fliplr(temp(2:end))], temp)));
Bjorn Gustavsson's toolbox advice is worth following, as there's a decent body of good literature around the bispectrum and triple correlation (mostly in IEEE journals) which present a variety of robust statistical methods for estimating these quantities.
My comment here is just to address your specific question, as this particular fft query had also troubled me when I wanted to improve my basic understanding of the bispectrum (which remains basic, despite having read the literature).

Sign in to comment.

Answers (1)

Bjorn Gustavsson
Bjorn Gustavsson on 11 Nov 2015
Perhaps you can modify any of the tools that appear when one searches for bispectrum at the File Exchange:
HTH
  2 Comments
Huy Le Van
Huy Le Van on 20 Jan 2021
Can you write coherent?
Bjorn Gustavsson
Bjorn Gustavsson on 20 Jan 2021
Edited: Bjorn Gustavsson on 20 Jan 2021
There are a couple of higher-order-spectral analysis tools to be found on the File Exchange (a user-contributed code-repository). Try to look at those toolboxes, that I linked to above, and see if any of those already have the functionality you search for.
I can write coherently.
Hope this clarify the confusion.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!