Choosing a non-power-of-two window lead to an error pop-up (with wrong icon, same problem as the help panel). Documentation should state that power-of-two is required. The name of fftWindow should really be SPECTROGRAM. See
http://www.mathworks.com/access/helpdesk/help/toolbox/signal/spectrogram.html
What happened to the periodogram (previously called fft, I think)?
I should be able to support non-powers of two. There are two fft implementations running around in there: the old 2**k one we wrote the first month of writing das2, and a one based on a library from NIST. I'd work towards making it always use the NIST one just for consistency.
I don't agree with you about the name "spectrogram" though. Mostly because spectrogram refers to a View, and these operators are working on the Model, but also because spectrogram already used to mean a color plot of a rank 2 or greater dataset, not necessarily a power spectrum from an fft. If I saw a matlab code using that I would have never guessed that's what it did. (I will definitely be seeing how my output compares with theirs though--there seem to be a number of different ideas about how the operation should be done.) (And maybe there is good reason to rename spectrogram to colorplot or something, but that would be very impactive, since spectrogram seems to be a widely-used term.)
I remember working on the periodogram, but I'm not sure what's happened with it. There is still an fft method that takes a rank 1 dataset Z(T) and returns the fft of it. Where are you accessing these functions? I guess the paper has fftWindow, doesn't it?
We'll need to re-visit the issue of naming. For consistency, I always use
Periodogram or Raw Periodogram - fft*conj(fft) with no smoothing
Spectrogram - Short-time periodograms rendered side-by-side
Histogram - etc.
PSD and FFT are usually used to mean fft*conj(fft) with or without smoothing.
I would defer to MATLAB's usage as it is most consistent with the signal processing literature.
I disagree that the naming should be made consistent with the MVC (software) perspective as opposed to the science perspective (common usage). We will need to research how things are termed in the space physics literature, which I am sure deviates from the engineering literature a bit.
Here is an example of spectrogram usage:
http://www-istp.gsfc.nasa.gov/istp/polar/polar_pwi_descs.html#whistlers
Perhaps externally we could use spectrogram to mean by default the definition of matlab and "channel spectrogram" to mean a rank 2 spectrogram as currently implemented?
SPASE uses
"The characterization of signal strengths as a function of frequency (or energy) and time."
"(or energy)" was probably debated a bit, and I think that's the source of confusion. So I think we should add fftSpectrum which is an alias (and superset eventually) of fftWindow. We should try to think of a better word for spectrograms, something like the X is the ontology plot>colorplot>X>spectrogram, maybe colorTable.
This is still 2**k, which can and should be fixed easily. So was the resolution to rename the function fftSpectrum?
fftSpectrogram
Doesn't "gram" imply a plot? I think that's getting ahead a bit--while generally the user would apply the function and then view the result, there are places where the function can be used that outside of visualization.
The name "window" is clearly misused: http://en.wikipedia.org/wiki/Window_function
Another thought would be to remove the function and replace it with two functions that are easier to name.
fftRank2= fft( frame( ds, 512 ) )
where "frame" is a function that takes 1-D data and makes a rank 2 array of frames.
Looking again at matlab, I see you can get the result without making a plot. Maybe we should just copy the interface of this routine, and call it matlab support...