I have a mixture of Gaussians and I want to look at their power power spectrum. The spatial distribution looks like this:


It's already been convolved with a Gaussian window function. I subtract the mean over all values and run an FFT in matlab. For the power spectrum I used $|\mathcal{F}|^2 $ and the image under is a section through the middle of the 2D phase space.


The zero phase component is orders of magnitude bigger than the rest of the spectra; given the nature of the problem I expected the power spectral density to look like a combination of Gaussians.

Edit: The data is initially given as a bivariate poisson process, defined on $ \mathbb{R}^2$. The weights are assumed to be equal and the Gaussians are equally spaced on a hexagonal grid. Now, I'm supposed to estimate the variance of the Gaussians, and wanted to do it using the empirical characteristic function,because the modified EM doesn't work well with data (I guess it's because sample is relatively small ~300 points in total). Following supervisor's suggestion, I estimated a density using Gaussian kernels, and then ran the FFT. Concerning the Matlab implementation: The 2D spatial density matrix is 'x'

nfft= 2^(nextpow2(max(size(x))));
fftx = fft2(x,nfft,nfft);
mx = abs(fftx)/length(x);
mx = mx.^2;

I selcted arbitrarily a section and plotted plot(ffshift(mx(2048,:)))

Edit2: I added a link to the data. https://www.dropbox.com/s/y5sgz0ataxe9z3s/FFT_problem_DataSet.mat

  • $\begingroup$ I'm confused by your units in your plot. What is the meaning of -100 cycles per meter? Power spectrum distributions typically have a point at infinity at the origin. Perhaps this is responsible for the result you're seeing? Have you tried looking at your result when eliminating this point? Also, power should be a log axis. $\endgroup$
    – Ed Gorcenski
    Aug 21, 2012 at 19:34
  • $\begingroup$ I suggest that this be moved to dsp.SE $\endgroup$ Aug 21, 2012 at 19:42
  • 1
    $\begingroup$ @Peter Are you sure that you're subtracting the mean before doing the FFT? $\endgroup$
    – Jim Clay
    Aug 22, 2012 at 1:05
  • 1
    $\begingroup$ Could you post your data file somewhere? $\endgroup$ Aug 22, 2012 at 8:19
  • 1
    $\begingroup$ @Peter what sort of data is that? I guess it is the 2D plot of the densities right? If your signal is zero mean random signal you will not see a peak at zero. It never happens. plot(abs(fft(randn(1,100)))) for example. $\endgroup$ Aug 22, 2012 at 11:44

1 Answer 1


The first and the obvious algorithm for the solution of this problem is the EM algorithm. This algoritm is getting worse in the number of parameters. It is also too much dependent on the initial conditions.

The drawbacks of this algorithm can be circumvented by parallel computing. This means you have $N$ EM algorithms run simultaneously which have different initialization points. The final algoritm takes all parameters estimated by N processors and based on the wellness of the fit gives the final decicion.

Another method is to use the central moments until Mth order. When written in a parametric form each xth order moment gives a linear/non-linear combination of parameters which are to be estimated. From here one can construct a test. Of course the moments should also be estimated from the data.

Another method would be to employ a better search algorithn. That is called particle swarm optimization. It will run similar to EM. However it is a stochastic algorithm have different characteristics than EM such as to be able to deal with more number of parameters. It is a kind of team optimization algorithm.

Thats all in my mind at the moment. Good luck with the experiments.

  • $\begingroup$ I've been looking into the EM and the method of the moments, the first looks a bit more appealing because I'm a bit pressed for time. Is it possible to run the EM on non-categorical data? The Matlab implementation of EM allows only for binary data; if it were possible to use the EM on the densities, as plotted in the top figure, I should be fine. $\endgroup$ Aug 26, 2012 at 17:19
  • $\begingroup$ Yes sure. Implementation is also quite easy. Fix the parameters with respect to all densities except for one. And estimate the parameters of the unknown density using the regular way. Since all other densities are assumed to be known in this stage, maximum likelihood estimation should maximize the likelihood of $f_1(\mu_1,\sigma_1,\epsilon_1)+f$. As $f$ is constant, maximum likelihood estimation of $\mu,\sigma,\epsilon$ is simple. In the next iteration, use the parameters that you found in the first stage and now you have $f_2(\mu_2,\sigma_2,\epsilon_2)+f$ for the maximul likelihood estimation $\endgroup$ Aug 26, 2012 at 22:09

Your Answer

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

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