If you're using pyplot.specgram (i.e. "from pylab import *;
specgram(...)"), note that the plot is in dB, hence the negative
values.
I'm surprised this fact isn't mentioned in the documentation:
http://matplotlib.org/api/pyplot_api.html?highlight=specgram#matplotlib.pyplot.specgram

However, when in doubt, look at the code.

On Mon, Nov 12, 2012 at 12:28 PM, Paul Anton Letnes
<paul.anton.let...@gmail.com> wrote:
> Heh,
>
> that's funny. Now then, why do my plots come out with negative values all 
> over the place? That's why I started digging around. After all, X * conj(X) 
> should be equal to the absolute square of X, right?
>
> Paul
>
>
> On 12. nov. 2012, at 21:00, G Jones wrote:
>
>> Hi,
>> If you trace back into the code further, you will see that the Pxx is
>> computed as X = fft(x), Pxx = X * conj(X) which is real, but the data
>> type will be complex with a ~0 imaginary part (up to floating point
>> precision). Thus the Pxx.real is just to ensure that the resulting
>> data type is real instead of complex to save memory.
>> Glenn
>>
>> On Mon, Nov 12, 2012 at 11:42 AM, Paul Anton Letnes
>> <paul.anton.let...@gmail.com> wrote:
>>> Hi,
>>>
>>> not 100% sure this is a bug, but here goes:
>>>
>>> In file matplotlib/lib/matplotlib/mlab.py, the functions psd (power 
>>> spectral density) and specgram returns the real part of the fourier 
>>> transform.
>>> % grep -n Pxx.real mlab.py
>>> 390:    return Pxx.real,freqs
>>> 470:    Pxx = Pxx.real #Needed since helper implements generically
>>> (git version 4f902fac1c5bf267e3fdeb4c2045926d7498e85a, cloned from github 
>>> today)
>>>
>>> This all means that the specgram plot routine yields the real part of the 
>>> Fourier transform, rather than its absolute square (forgetting 
>>> normalization for simplicity of discussion). The definition of the PSD is 
>>> that it is the absolute square of the Fourier transform:
>>> https://en.wikipedia.org/wiki/Power_spectral_density#Energy_spectral_density
>>>
>>> Hence, I believe this is a bug which should be fixed.
>>>
>>> Cheers
>>> Paul
>>> ------------------------------------------------------------------------------
>>> Monitor your physical, virtual and cloud infrastructure from a single
>>> web console. Get in-depth insight into apps, servers, databases, vmware,
>>> SAP, cloud infrastructure, etc. Download 30-day Free Trial.
>>> Pricing starts from $795 for 25 servers or applications!
>>> http://p.sf.net/sfu/zoho_dev2dev_nov
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to