You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
1
(13) |
2
(12) |
3
(3) |
4
(13) |
5
(13) |
6
(2) |
7
(5) |
8
(17) |
9
(9) |
10
(10) |
11
(16) |
12
(8) |
13
(10) |
14
(1) |
15
(5) |
16
(5) |
17
(7) |
18
(13) |
19
(9) |
20
|
21
|
22
(2) |
23
(3) |
24
(5) |
25
(5) |
26
(14) |
27
(1) |
28
(2) |
29
(18) |
30
(5) |
31
(22) |
|
|
|
I tried to change the value and the highest one I can use is 2 so it's not = a=20 big improvement for what I understand. You can contact me if you need other test naturally N. Le Friday 26 October 2007 12:24:34 Michael Droettboom, vous avez =C3=A9crit= =C2=A0: > It's great to have narrowed this down! Unfortunately, with that #define > removed, you will get lower quality fonts (the hinting will be more > extreme, which causes the glyphs to often look too thin, or > inconsistent.) See this thread for more information -- > > http://www.mail-archive.com/mat...@li.../msg014= 80 >.html > > I'd hate to turn off this improvement because it doesn't work in some > environments. > > I wonder if you wouldn't mind performing one more experiment... There > is another define at the top of ft2font.cpp, "HORIZ_HINTING" that > controls the amount of hinting subsampling. Currently it is set to 8, > but I wonder if a lower value would work. Ideally, we want to set this > as high as we can get away with. > > #define VERTICAL_HINTING > #ifdef VERTICAL_HINTING > #define HORIZ_HINTING 8 > #else > #define HORIZ_HINTING 1 > #endif > > Would you mind trying other values and seeing if any work? If not, I'll > probably take this question to the freetype mailing list now that we've > narrowed the cause down to only a three line difference in the code. > > Cheers, > Mike > > hu...@ya... wrote: > > Le Friday 26 October 2007 11:22:06, vous avez =C3=A9crit : > >> Thanks for this information. It looks like the font outline data is > >> somehow getting corrupted before freetype renders it. Again, however,= I > >> can't reproduce it on my machine (I've attached a copy of what it looks > >> like for me), so I'm still pretty stumped. My suspicion is that it's a > >> 64-bit vs. 32-bit problem since both people known to have trouble are = on > >> 64-bit platforms, and I am not. I have tried recompiling with gcc-4.2= =2E2 > >> and I still wasn't able to reproduce. > > > > I can imagine that it's difficult for you to debug something you cannot > > reproduce. Just a remark I don't have 64-bits but a 32 so the problem is > > not comming because of the plateforme. > > > >> One thing you could *try*, to rule out any recent changes to the glyph > >> rendering, is to comment out this line near the top of src/ft2font.cpp: > >> > >> #define VERTICAL_HINTING > >> > >> as follows > >> > >> //#define VERTICAL_HINTING > > > > Yes it's doing the trick., I don't have anymore the problem. Thank you > > very much. I have now the same result than you with the test I produce > > before. > > > >> Additional information: Are there any warnings produced when compiling > >> ft2font.cpp? Can you send me your matplotlibrc file? > > > > just the classic one: > > > > cc1plus: warning: command line option "-Wstrict-prototypes" is valid for > > Ada/C/ObjC but not for C++ > > > > Thank you very much. > > > > N. > > > >> Cheers, > >> Mike > >> > >> hu...@ya... wrote: > >>> Yep that can be a good idea. I don't know anything on how mathtext is > >>> working but I'm not completely sure that the problem is with freetype > >>> because sometime that can work. In reality every character I tested > >>> worked but you have to put in a certain order. To understand a little > >>> bit more what I try to say (very badly) see the script join and the > >>> figure. > >>> > >>> I hope that can help a little bit to try to find the reason of this > >>> behaviour. > >>> > >>> N > >>> > >>> Le Thursday 25 October 2007 15:41:40 Michael Droettboom, vous avez=20 =C3=A9crit : > >>>> Darren Dale wrote: > >>>>> Hi Mike, > >>>>> > >>>>> On Tuesday 23 October 2007 09:05:56 am Michael Droettboom wrote: > >>>>>> Unfortunately, I can't reproduce this on my machine even with the > >>>>>> latest stable version of freetype-2.5.3 (which is the same version > >>>>>> in Ubuntu Gutsy). > >>>>> > >>>>> I think you mean freetype-2.3.5. I also have that version installed, > >>>>> although the mpl setup script is reporting 9.16.3. > >>>> > >>>> Yes. freetype-2.3.5. There are arcane historical reasons I don't > >>>> fully comprehend why the pkgconfig version doesn't match the release > >>>> version (and why freetype2 is called freetype6 on Debian and > >>>> derivatives)... but my numbers do match yours. > >>>> > >>>>>> The Ubuntu/Debian package of freetype has a lot of patches > >>>>>> applied, and I don't know if they are causing this (but from the > >>>>>> looks of them, I doubt it). > >>>>>> > >>>>>> Can you set debug.verbose to "annoying" and send me the output of > >>>>>> your matplotlib run? I want to rule out any font-loading problems. > >>>>> > >>>>> It's attached. I'm running 64bit gentoo, everything compiled with > >>>>> gcc-4.2.2, in case its relevent. > >>>> > >>>> Always good to have more details, but I'm sort of at a loss on this > >>>> one, especially since I can't reproduce it. > >>>> > >>>> Maybe we need to take a poll on this list of who is working and who > >>>> isn't to see what the source of the breakage may be... > >>>> > >>>> Cheers, > >>>> Mike > >>>> > >>>> --------------------------------------------------------------------= =2D- > >>>>--
It's great to have narrowed this down! Unfortunately, with that #define removed, you will get lower quality fonts (the hinting will be more extreme, which causes the glyphs to often look too thin, or inconsistent.) See this thread for more information -- http://www.mail-archive.com/mat...@li.../msg01480.html I'd hate to turn off this improvement because it doesn't work in some environments. I wonder if you wouldn't mind performing one more experiment... There is another define at the top of ft2font.cpp, "HORIZ_HINTING" that controls the amount of hinting subsampling. Currently it is set to 8, but I wonder if a lower value would work. Ideally, we want to set this as high as we can get away with. #define VERTICAL_HINTING #ifdef VERTICAL_HINTING #define HORIZ_HINTING 8 #else #define HORIZ_HINTING 1 #endif Would you mind trying other values and seeing if any work? If not, I'll probably take this question to the freetype mailing list now that we've narrowed the cause down to only a three line difference in the code. Cheers, Mike hu...@ya... wrote: > Le Friday 26 October 2007 11:22:06, vous avez écrit : >> Thanks for this information. It looks like the font outline data is >> somehow getting corrupted before freetype renders it. Again, however, I >> can't reproduce it on my machine (I've attached a copy of what it looks >> like for me), so I'm still pretty stumped. My suspicion is that it's a >> 64-bit vs. 32-bit problem since both people known to have trouble are on >> 64-bit platforms, and I am not. I have tried recompiling with gcc-4.2.2 >> and I still wasn't able to reproduce. > > I can imagine that it's difficult for you to debug something you cannot > reproduce. Just a remark I don't have 64-bits but a 32 so the problem is not > comming because of the plateforme. > >> One thing you could *try*, to rule out any recent changes to the glyph >> rendering, is to comment out this line near the top of src/ft2font.cpp: >> >> #define VERTICAL_HINTING >> >> as follows >> >> //#define VERTICAL_HINTING > > Yes it's doing the trick., I don't have anymore the problem. Thank you very > much. I have now the same result than you with the test I produce before. > >> Additional information: Are there any warnings produced when compiling >> ft2font.cpp? Can you send me your matplotlibrc file? > > just the classic one: > > cc1plus: warning: command line option "-Wstrict-prototypes" is valid for > Ada/C/ObjC but not for C++ > > Thank you very much. > > N. > >> Cheers, >> Mike >> >> hu...@ya... wrote: >>> Yep that can be a good idea. I don't know anything on how mathtext is >>> working but I'm not completely sure that the problem is with freetype >>> because sometime that can work. In reality every character I tested >>> worked but you have to put in a certain order. To understand a little bit >>> more what I try to say (very badly) see the script join and the figure. >>> >>> I hope that can help a little bit to try to find the reason of this >>> behaviour. >>> >>> N >>> >>> Le Thursday 25 October 2007 15:41:40 Michael Droettboom, vous avez écrit : >>>> Darren Dale wrote: >>>>> Hi Mike, >>>>> >>>>> On Tuesday 23 October 2007 09:05:56 am Michael Droettboom wrote: >>>>>> Unfortunately, I can't reproduce this on my machine even with the >>>>>> latest stable version of freetype-2.5.3 (which is the same version in >>>>>> Ubuntu Gutsy). >>>>> I think you mean freetype-2.3.5. I also have that version installed, >>>>> although the mpl setup script is reporting 9.16.3. >>>> Yes. freetype-2.3.5. There are arcane historical reasons I don't fully >>>> comprehend why the pkgconfig version doesn't match the release version >>>> (and why freetype2 is called freetype6 on Debian and derivatives)... >>>> but my numbers do match yours. >>>> >>>>>> The Ubuntu/Debian package of freetype has a lot of patches >>>>>> applied, and I don't know if they are causing this (but from the looks >>>>>> of them, I doubt it). >>>>>> >>>>>> Can you set debug.verbose to "annoying" and send me the output of your >>>>>> matplotlib run? I want to rule out any font-loading problems. >>>>> It's attached. I'm running 64bit gentoo, everything compiled with >>>>> gcc-4.2.2, in case its relevent. >>>> Always good to have more details, but I'm sort of at a loss on this one, >>>> especially since I can't reproduce it. >>>> >>>> Maybe we need to take a poll on this list of who is working and who >>>> isn't to see what the source of the breakage may be... >>>> >>>> Cheers, >>>> Mike >>>> >>>> ------------------------------------------------------------------------ > > -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Le Friday 26 October 2007 11:22:06, vous avez =E9crit=A0: > Thanks for this information. It looks like the font outline data is > somehow getting corrupted before freetype renders it. Again, however, I > can't reproduce it on my machine (I've attached a copy of what it looks > like for me), so I'm still pretty stumped. My suspicion is that it's a > 64-bit vs. 32-bit problem since both people known to have trouble are on > 64-bit platforms, and I am not. I have tried recompiling with gcc-4.2.2 > and I still wasn't able to reproduce. I can imagine that it's difficult for you to debug something you cannot=20 reproduce. Just a remark I don't have 64-bits but a 32 so the problem is no= t=20 comming because of the plateforme. > One thing you could *try*, to rule out any recent changes to the glyph > rendering, is to comment out this line near the top of src/ft2font.cpp: > > #define VERTICAL_HINTING > > as follows > > //#define VERTICAL_HINTING Yes it's doing the trick., I don't have anymore the problem. Thank you very= =20 much. I have now the same result than you with the test I produce before. > Additional information: Are there any warnings produced when compiling > ft2font.cpp? Can you send me your matplotlibrc file? just the classic one: cc1plus: warning: command line option "-Wstrict-prototypes" is valid for=20 Ada/C/ObjC but not for C++ Thank you very much. N. > Cheers, > Mike > > hu...@ya... wrote: > > Yep that can be a good idea. I don't know anything on how mathtext is > > working but I'm not completely sure that the problem is with freetype > > because sometime that can work. In reality every character I tested > > worked but you have to put in a certain order. To understand a little b= it > > more what I try to say (very badly) see the script join and the figure. > > > > I hope that can help a little bit to try to find the reason of this > > behaviour. > > > > N > > > > Le Thursday 25 October 2007 15:41:40 Michael Droettboom, vous avez =E9c= rit : > >> Darren Dale wrote: > >>> Hi Mike, > >>> > >>> On Tuesday 23 October 2007 09:05:56 am Michael Droettboom wrote: > >>>> Unfortunately, I can't reproduce this on my machine even with the > >>>> latest stable version of freetype-2.5.3 (which is the same version in > >>>> Ubuntu Gutsy). > >>> > >>> I think you mean freetype-2.3.5. I also have that version installed, > >>> although the mpl setup script is reporting 9.16.3. > >> > >> Yes. freetype-2.3.5. There are arcane historical reasons I don't ful= ly > >> comprehend why the pkgconfig version doesn't match the release version > >> (and why freetype2 is called freetype6 on Debian and derivatives)... > >> but my numbers do match yours. > >> > >>>> The Ubuntu/Debian package of freetype has a lot of patches > >>>> applied, and I don't know if they are causing this (but from the loo= ks > >>>> of them, I doubt it). > >>>> > >>>> Can you set debug.verbose to "annoying" and send me the output of yo= ur > >>>> matplotlib run? I want to rule out any font-loading problems. > >>> > >>> It's attached. I'm running 64bit gentoo, everything compiled with > >>> gcc-4.2.2, in case its relevent. > >> > >> Always good to have more details, but I'm sort of at a loss on this on= e, > >> especially since I can't reproduce it. > >> > >> Maybe we need to take a poll on this list of who is working and who > >> isn't to see what the source of the breakage may be... > >> > >> Cheers, > >> Mike > >> > >> ----------------------------------------------------------------------= =2D-
More information -- I just compiled matplotlib on a communal RHEL4 64-bit installation, and I still can not reproduce this bug there. The plot thickens... Cheers, Mike Michael Droettboom wrote: > Thanks for this information. It looks like the font outline data is > somehow getting corrupted before freetype renders it. Again, however, I > can't reproduce it on my machine (I've attached a copy of what it looks > like for me), so I'm still pretty stumped. My suspicion is that it's a > 64-bit vs. 32-bit problem since both people known to have trouble are on > 64-bit platforms, and I am not. I have tried recompiling with gcc-4.2.2 > and I still wasn't able to reproduce. > > One thing you could *try*, to rule out any recent changes to the glyph > rendering, is to comment out this line near the top of src/ft2font.cpp: > > #define VERTICAL_HINTING > > as follows > > //#define VERTICAL_HINTING > > Additional information: Are there any warnings produced when compiling > ft2font.cpp? Can you send me your matplotlibrc file? > > Cheers, > Mike > > hu...@ya... wrote: >> Yep that can be a good idea. I don't know anything on how mathtext is >> working but I'm not completely sure that the problem is with freetype >> because sometime that can work. In reality every character I tested >> worked but you have to put in a certain order. To understand a little >> bit more what I try to say (very badly) see the script join and the >> figure. >> I hope that can help a little bit to try to find the reason of this >> behaviour. >> >> N >> >> Le Thursday 25 October 2007 15:41:40 Michael Droettboom, vous avez >> écrit : >>> Darren Dale wrote: >>>> Hi Mike, >>>> >>>> On Tuesday 23 October 2007 09:05:56 am Michael Droettboom wrote: >>>>> Unfortunately, I can't reproduce this on my machine even with the >>>>> latest >>>>> stable version of freetype-2.5.3 (which is the same version in Ubuntu >>>>> Gutsy). >>>> I think you mean freetype-2.3.5. I also have that version installed, >>>> although the mpl setup script is reporting 9.16.3. >>> Yes. freetype-2.3.5. There are arcane historical reasons I don't fully >>> comprehend why the pkgconfig version doesn't match the release version >>> (and why freetype2 is called freetype6 on Debian and derivatives)... >>> but my numbers do match yours. >>> >>>>> The Ubuntu/Debian package of freetype has a lot of patches >>>>> applied, and I don't know if they are causing this (but from the looks >>>>> of them, I doubt it). >>>>> >>>>> Can you set debug.verbose to "annoying" and send me the output of your >>>>> matplotlib run? I want to rule out any font-loading problems. >>>> It's attached. I'm running 64bit gentoo, everything compiled with >>>> gcc-4.2.2, in case its relevent. >>> Always good to have more details, but I'm sort of at a loss on this one, >>> especially since I can't reproduce it. >>> >>> Maybe we need to take a poll on this list of who is working and who >>> isn't to see what the source of the breakage may be... >>> >>> Cheers, >>> Mike >>> >>> ------------------------------------------------------------------------ >>> > > > ------------------------------------------------------------------------ > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > > > ------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Thanks for this information. It looks like the font outline data is somehow getting corrupted before freetype renders it. Again, however, I can't reproduce it on my machine (I've attached a copy of what it looks like for me), so I'm still pretty stumped. My suspicion is that it's a 64-bit vs. 32-bit problem since both people known to have trouble are on 64-bit platforms, and I am not. I have tried recompiling with gcc-4.2.2 and I still wasn't able to reproduce. One thing you could *try*, to rule out any recent changes to the glyph rendering, is to comment out this line near the top of src/ft2font.cpp: #define VERTICAL_HINTING as follows //#define VERTICAL_HINTING Additional information: Are there any warnings produced when compiling ft2font.cpp? Can you send me your matplotlibrc file? Cheers, Mike hu...@ya... wrote: > Yep that can be a good idea. I don't know anything on how mathtext is working > but I'm not completely sure that the problem is with freetype because > sometime that can work. In reality every character I tested worked but you > have to put in a certain order. To understand a little bit more what I try to > say (very badly) see the script join and the figure. > > I hope that can help a little bit to try to find the reason of this behaviour. > > N > > Le Thursday 25 October 2007 15:41:40 Michael Droettboom, vous avez écrit : >> Darren Dale wrote: >>> Hi Mike, >>> >>> On Tuesday 23 October 2007 09:05:56 am Michael Droettboom wrote: >>>> Unfortunately, I can't reproduce this on my machine even with the latest >>>> stable version of freetype-2.5.3 (which is the same version in Ubuntu >>>> Gutsy). >>> I think you mean freetype-2.3.5. I also have that version installed, >>> although the mpl setup script is reporting 9.16.3. >> Yes. freetype-2.3.5. There are arcane historical reasons I don't fully >> comprehend why the pkgconfig version doesn't match the release version >> (and why freetype2 is called freetype6 on Debian and derivatives)... >> but my numbers do match yours. >> >>>> The Ubuntu/Debian package of freetype has a lot of patches >>>> applied, and I don't know if they are causing this (but from the looks >>>> of them, I doubt it). >>>> >>>> Can you set debug.verbose to "annoying" and send me the output of your >>>> matplotlib run? I want to rule out any font-loading problems. >>> It's attached. I'm running 64bit gentoo, everything compiled with >>> gcc-4.2.2, in case its relevent. >> Always good to have more details, but I'm sort of at a loss on this one, >> especially since I can't reproduce it. >> >> Maybe we need to take a poll on this list of who is working and who >> isn't to see what the source of the breakage may be... >> >> Cheers, >> Mike >> >> ------------------------------------------------------------------------ >> -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA
Hi Gurus, (I'm sorry for sending the above unfinished one) I'm new to matplotlib programming, and get puzzled about designing picking handler for broken_barh by the OO interface. Could you give me any guidance? Any your help will be appreciated. <P.S.> My current approach is presented as the following: 1. plot broken_barh and set picker pcol = axes.broken_barh(xseq, yseq, facecolors = colors) pcol.set_picker(True) 2. Design picking handler mycanvas.mpl_connect('pick_event', foo_pick) ..... def foo_pick(self, event): if isinstance(event.artist, BrokenBarHCollection): .... But it doesn't work as expected, and the following error message are printed. ~~~~~~ verts N=2, Nverts=2 [[(Decimal("1184851021.054456271"), 0.5), (Decimal("1184851021.054456271"), 1.5), (Decimal("1184851021.280959577"), 1.5), (Decimal("1184851021.280959577"), 0.5)], [(Decimal("1184851021.280959577"), 0.5), (Decimal("1184851021.280959577"), 1.5), (Decimal("1184851024.851673542"), 1.5), (Decimal("1184851024.851673542"), 0.5)]] offsets; Noffsets=0 i%Nverts=0 Traceback (most recent call last): File "/usr/lib/python2.5/site-packages/matplotlib/backends/backend_gtk.py", line 146, in button_press_event FigureCanvasBase.button_press_event(self, x, y, event.button) File "/usr/lib/python2.5/site-packages/matplotlib/backend_bases.py", line 914, in button_press_event self.figure.pick(mouseevent) File "/usr/lib/python2.5/site-packages/matplotlib/figure.py", line 176, in pick a.pick(mouseevent) File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 1763, in pick a.pick(mouseevent) File "/usr/lib/python2.5/site-packages/matplotlib/collections.py", line 155, in pick for i, thispoly in enumerate(self.get_transformed_patches()): File "/usr/lib/python2.5/site-packages/matplotlib/collections.py", line 188, in get_transformed_patches if any(isnan(polyverts)): TypeError: function not supported for these types, and can't coerce safely to supported types ~~~~~~ My machine environment is: fedora 7; python-2.5; matplotlib 0.90 -- sunzen <<freedom & enjoyment>>
Hi Gurus, I'm new to matplotlib programming, and get puzzled about designing picking handler for broken_barh by the OO interface. My current approach is presented as the following: 1. plot broken_barh and set picker pcol = axes.broken_barh(xseq, yseq, facecolors = colors) pcol.set_picker(True) 2. Design picking handler mycanvas.mpl_connect('pick_event', foo_pick) ..... def foo_pick(self, event): Could you give me any guidance? -- sunzen <<freedom & enjoyment>>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000066"> <font face="Times New Roman">spectral density is by convention a 1Hz binwidth, not an arbitrary one, units of A^2/Hz.<br> <br> perhaps if you manually compute the spectral density of a sine wave, you will easily see<br> that they don't have infinite power, R is the autocorrelation of the Asin(wt):<br> </font><img src="cid:par...@is..." alt=""><br> <font face="Times New Roman"><br> Back to the original question:<br> <br> Is there evidence that the matplotlib PSD spectral amplitudes are accurate?<br> say by comparison with Matlab results, or a synthetic signal as in the example, or <br> from considerations of basic DSP as in the references?<br> <br> </font><br> <a class="moz-txt-link-abbreviated" href="mailto:bre...@un...">bre...@un...</a> wrote: <blockquote cite="mid:OFE...@un..." type="cite"><br> <font face="sans-serif" size="2">There is certainly differences (usually of a factor of PI) in the various definitions used for PSDs, but a simple sign wave has an infinite power density at the sine wave frequency. Are we agreed on that?</font> <br> <br> <font face="sans-serif" size="2">Use of windowing will modify this comment somewhat (so it probably won't really go to infinity) but the basic fact remains. The units of a PSD are amp^2/Hz. The MS of a signal between two frequencies should equal the area under the PSD between those frequencies (with allowance for different definitions/factors of PI). As I said, for a sign wave the frequency band can be made arbitrarily small about the sine wave frequency, but the power between these bands remains constant. Therefore the PSD goes to infinity. Otherwise it isn't a density.</font> <br> <br> <br> <br> <br> <table width="100%"> <tbody> <tr valign="top"> <td width="40%"><font face="sans-serif" size="1"><b>Joseph Park <a class="moz-txt-link-rfc2396E" href="mailto:jp...@is..."><jp...@is...></a></b> </font><br> <font face="sans-serif" size="1">Sent by: <a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> <p><font face="sans-serif" size="1">26/10/2007 10:49 AM</font> </p> </td> <td width="59%"> <table width="100%"> <tbody> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">To</font></div> </td> <td><br> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">cc</font></div> </td> <td><font face="sans-serif" size="1"><a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">Subject</font></div> </td> <td><font face="sans-serif" size="1">Re: [Matplotlib-users] PSD amplitudes</font></td> </tr> </tbody> </table> <br> <table> <tbody> <tr valign="top"> <td> <br> </td> <td><br> </td> </tr> </tbody> </table> <br> </td> </tr> </tbody> </table> <br> <br> <br> <font color="#000066" face="Times New Roman" size="3">is the suggestion that the matplotlib algorithm is correct in computing PSD amplitudes?<br> <br> btw, increasing nFFT increases the number of points used in the FFT, which <br> increases the spectral <b>frequency</b> resolution (smaller binwidth) but for a limited data set<br> of N points, as is the case in the example, decreases the number of data averages <br> thereby decreasing the spectral <b>amplitude</b> resolution (accuracy). keep in mind that<br> just changing nFFT without making a corresponding change in overlap will oversample<br> the data, thereby skewing the amplitudes. <br> <br> in any case, the amplitude change is not approaching infinity, even if you set nFFT to<br> 6000, which is the length of the timeseries, the amplitudes are ~35dB, adjust variable ymax<br> to see this. <br> <br> to review issues of spectral/amplitude resolution, windowing/overlap, etc, a good<br> reference is Random Data by Bendat &Piersol:</font><font color="blue" face="Times New Roman" size="3"><u><br> </u></font><a moz-do-not-send="true" href=" color="blue" face="Times New Roman" size="3"><u>http://www.messagelabs.com/email"><font color="blue" size="3"><u>http://www.numpy.org/"><font color="blue" size="2"><tt><u>www.numpy.org</u></tt></font></a><font color="#000066" size="2"><tt> numpy.scipy.org<br> except ImportError: <br> print "Failed to import numpy."<br> <br> try:<br> import pylab as mp # matplotlib.sourceforge.net<br> from matplotlib.font_manager import fontManager, FontProperties <br> except ImportError: <br> print "Failed to import pylab."<br> <br> <br> # Default Parameters<br> nFFT = 1024 <br> overlap = 512 <br> freqSample = 100. <br> PlotAll = False<br> WriteOutput = False<br> <br> ##----------------------------------------------------------------------------<br> ## Main module<br> def main():<br> <br> deltaF = freqSample/nFFT # Frequency resolution in Hz<br> deltaT = 1./freqSample # Sample interval<br> print 'Sample interval %e (s)' % (deltaT)<br> print 'Frequency resolution %e (Hz)' % (deltaF)<br> <br> # Setup Plots<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.title ( "PSD" )<br> mp.ylabel( "(dB)" )<br> mp.xlabel( "Frequency (Hz)" )<br> legendFont = FontProperties(size='small')<br> <br> ymin = 0<br> ymax = 30<br> xmin = 0<br> xmax = 50<br> xticks = 5<br> yticks = 5<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.title ( "Input Timeseries" )<br> mp.ylabel( "Amplitude" )<br> mp.xlabel( "time (s)" )<br> <br> # Create some synthetic data with unity RMS amplitude = 0 dB<br> # ----------------------------------------------------------------------<br> t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval<br> A = 1.414<br> <br> y0 = A * sin( 2. * math.pi * 5 * t )<br> y1 = A * sin( 2. * math.pi * 10 * t )<br> y2 = A * sin( 2. * math.pi * 20 * t )<br> y3 = A * sin( 2. * math.pi * 30 * t )<br> y4 = A * sin( 2. * math.pi * 40 * t )<br> y5 = A * sin( 2. * math.pi * 45 * t )<br> <br> dataList = [ y0, y1, y2, y3, y4, y5 ]<br> <br> for data in dataList:<br> inputDataLen = len( data )<br> numAverages = math.floor( inputDataLen / (overlap) ) - 1<br> normalizedRandomError = 1./math.sqrt( numAverages )<br> print "%d points" % ( inputDataLen ),<br> print "%d averages" % (numAverages),<br> print "normalized random error %.3f" % ( normalizedRandomError )<br> <br> mp.figure(1)<br> (Pxx, freqs) = mp.psd( data,<br> NFFT = nFFT,<br> Fs = freqSample,<br> noverlap = overlap,<br> lw = 2,<br> label = '' )<br> <br> Pxx_dB = 10.*log10(Pxx)<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.plot(t, data, label='' )<br> <br> # Write Output data<br> # ----------------------------------------------------------------------<br> if WriteOutput:<br> PxxLen = len(Pxx)<br> OutputFile = "PSD.dat"<br> fdOutFile = open( OutputFile, 'a' )<br> fdOutFile.write( "Freq\t\tPower(dB)\n" )<br> for i in range(PxxLen):<br> fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) )<br> fdOutFile.close()<br> print "Wrote ", PxxLen, " points to ", OutputFile<br> <br> <br> # Show the Plot<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.axis([xmin, xmax, ymin, ymax])<br> mp.xticks( arange(xmin, xmax+1, xticks) )<br> mp.yticks( arange(ymin, ymax , yticks) )<br> mp.title('')<br> mp.xlabel('Frequency (Hz)')<br> mp.ylabel(r'$\tt{dB re V^2/Hz}$')<br> #mp.legend( loc='upper right', prop=legendFont )<br> if WriteOutput:<br> plotFileName = "PSD.png"<br> mp.savefig( plotFileName )<br> print "Wrote png image to ", plotFileName<br> if PlotAll:<br> mp.figure(2)<br> #mp.legend( loc='lower left', prop=legendFont )<br> mp.show()<br> <br> print "Normal Exit"<br> ## Main module<br> ##----------------------------------------------------------------------------<br> <br> ##----------------------------------------------------------------------------<br> ## Provide for cmd line invocation<br> if __name__ == "__main__":<br> main()<br> <br> -------------------------------------------------------------------------<br> This SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> </tt></font><a moz-do-not-send="true" href=" color="blue" size="2"><tt><u>https://lists.sourceforge.net/lists/listinfo/matplotlib-users"><font color="blue" size="2"><tt><u>http://www.messagelabs.com/email"><font color="blue" size="3"><u>SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> </tt></font><a moz-do-not-send="true" href=" color="blue" size="2"><tt><u>https://lists.sourceforge.net/lists/listinfo/matplotlib-users"><font color="blue" size="2"><tt><u>http://www.messagelabs.com/email" rel="nofollow">http://www.messagelabs.com/email">http://www.messagelabs.com/email</a> <br> ______________________________________________________________________</font><font size="2"><tt>-------------------------------------------------------------------------<br> This SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> <a class="moz-txt-link-freetext" href="http://get.splunk.com/_______________________________________________">http://get.splunk.com/_______________________________________________</a><br> Matplotlib-users mailing list<br> <a class="moz-txt-link-abbreviated" href="mailto:Mat...@li...">Mat...@li...</a><br> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/matplotlib-users">https://lists.sourceforge.net/lists/listinfo/matplotlib-users</a><br> </tt></font> <br> <br> UNITED GROUP<br> This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access.<br> If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.<br> </blockquote> <br> <pre class="moz-signature" cols="80">-- </pre> </body> </html>
There is certainly differences (usually of a factor of PI) in the various definitions used for PSDs, but a simple sign wave has an infinite power density at the sine wave frequency. Are we agreed on that? Use of windowing will modify this comment somewhat (so it probably won't really go to infinity) but the basic fact remains. The units of a PSD are amp^2/Hz. The MS of a signal between two frequencies should equal the area under the PSD between those frequencies (with allowance for different definitions/factors of PI). As I said, for a sign wave the frequency band can be made arbitrarily small about the sine wave frequency, but the power between these bands remains constant. Therefore the PSD goes to infinity. Otherwise it isn't a density. Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 10:49 AM To cc mat...@li... Subject Re: [Matplotlib-users] PSD amplitudes is the suggestion that the matplotlib algorithm is correct in computing PSD amplitudes? btw, increasing nFFT increases the number of points used in the FFT, which increases the spectral frequency resolution (smaller binwidth) but for a limited data set of N points, as is the case in the example, decreases the number of data averages thereby decreasing the spectral amplitude resolution (accuracy). keep in mind that just changing nFFT without making a corresponding change in overlap will oversample the data, thereby skewing the amplitudes. in any case, the amplitude change is not approaching infinity, even if you set nFFT to 6000, which is the length of the timeseries, the amplitudes are ~35dB, adjust variable ymax to see this. to review issues of spectral/amplitude resolution, windowing/overlap, etc, a good reference is Random Data by Bendat &Piersol: http://www.amazon.com/Random-Data-Analysis-Measurement-Procedures/dp/0471317330 i remain unconvinced that the PSD amplitudes are reasonable, which only leaves Matlab as an alternative... that's a hard pill to swallow... matplotlib is clearly preferable. bre...@un... wrote: If you lower the resolution (ie increase nFFT) in your program you will see that the PSD does indeed increase. I think it may be on the way to infinity. Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 10:05 AM To mat...@li... cc Subject Re: [Matplotlib-users] PSD amplitudes Shouldn't the PSD for a simple sine wave tend to infinity the spectral resolution will impact the amplitude, if you are not dealing with a density. by definition a spectral density has applied the bandwidth resolution correction. the PSD amplitude should correspond to the RMS amplitude of the sine wave. in the example a 1VRMS amplitude sine wave (time domain) should have a PSD power of 20*log(1V) = 0dB. The windowing function will impact this ideal number a bit, but certainly not by 25dB. bre...@un... wrote: Are you sure that the answer should be zero? Shouldn't the PSD for a simple sine wave tend to infinity (depending on the resolution)? Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 06:50 AM To mat...@li... cc Subject [Matplotlib-users] PSD amplitudes Please try the attached script. The answer should be ~0 dB for each of the frequencies. Most likely a simple scaling issue/parameter of which i'm ignorant. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ##---------------------------------------------------------------------------- ## Name: psd_scale.py ## ## Purpose: Test Power Spectral Density of 1Vrms data ## Depends on Python SciPy and NumPy ## ## Author: J Park ## ## Created: 10/17/07 ## ## Modified: ##---------------------------------------------------------------------------- try: from numpy import * # www.numpy.org numpy.scipy.org except ImportError: print "Failed to import numpy." try: import pylab as mp # matplotlib.sourceforge.net from matplotlib.font_manager import fontManager, FontProperties except ImportError: print "Failed to import pylab." # Default Parameters nFFT = 1024 overlap = 512 freqSample = 100. PlotAll = False WriteOutput = False ##---------------------------------------------------------------------------- ## Main module def main(): deltaF = freqSample/nFFT # Frequency resolution in Hz deltaT = 1./freqSample # Sample interval print 'Sample interval %e (s)' % (deltaT) print 'Frequency resolution %e (Hz)' % (deltaF) # Setup Plots # ---------------------------------------------------------------------- mp.figure(1) mp.title ( "PSD" ) mp.ylabel( "(dB)" ) mp.xlabel( "Frequency (Hz)" ) legendFont = FontProperties(size='small') ymin = 0 ymax = 30 xmin = 0 xmax = 50 xticks = 5 yticks = 5 if PlotAll: mp.figure(2) mp.title ( "Input Timeseries" ) mp.ylabel( "Amplitude" ) mp.xlabel( "time (s)" ) # Create some synthetic data with unity RMS amplitude = 0 dB # ---------------------------------------------------------------------- t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval A = 1.414 y0 = A * sin( 2. * math.pi * 5 * t ) y1 = A * sin( 2. * math.pi * 10 * t ) y2 = A * sin( 2. * math.pi * 20 * t ) y3 = A * sin( 2. * math.pi * 30 * t ) y4 = A * sin( 2. * math.pi * 40 * t ) y5 = A * sin( 2. * math.pi * 45 * t ) dataList = [ y0, y1, y2, y3, y4, y5 ] for data in dataList: inputDataLen = len( data ) numAverages = math.floor( inputDataLen / (overlap) ) - 1 normalizedRandomError = 1./math.sqrt( numAverages ) print "%d points" % ( inputDataLen ), print "%d averages" % (numAverages), print "normalized random error %.3f" % ( normalizedRandomError ) mp.figure(1) (Pxx, freqs) = mp.psd( data, NFFT = nFFT, Fs = freqSample, noverlap = overlap, lw = 2, label = '' ) Pxx_dB = 10.*log10(Pxx) if PlotAll: mp.figure(2) mp.plot(t, data, label='' ) # Write Output data # ---------------------------------------------------------------------- if WriteOutput: PxxLen = len(Pxx) OutputFile = "PSD.dat" fdOutFile = open( OutputFile, 'a' ) fdOutFile.write( "Freq\t\tPower(dB)\n" ) for i in range(PxxLen): fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) ) fdOutFile.close() print "Wrote ", PxxLen, " points to ", OutputFile # Show the Plot # ---------------------------------------------------------------------- mp.figure(1) mp.axis([xmin, xmax, ymin, ymax]) mp.xticks( arange(xmin, xmax+1, xticks) ) mp.yticks( arange(ymin, ymax , yticks) ) mp.title('') mp.xlabel('Frequency (Hz)') mp.ylabel(r'$\tt{dB re V^2/Hz}$') #mp.legend( loc='upper right', prop=legendFont ) if WriteOutput: plotFileName = "PSD.png" mp.savefig( plotFileName ) print "Wrote png image to ", plotFileName if PlotAll: mp.figure(2) #mp.legend( loc='lower left', prop=legendFont ) mp.show() print "Normal Exit" ## Main module ##---------------------------------------------------------------------------- ##---------------------------------------------------------------------------- ## Provide for cmd line invocation if __name__ == "__main__": main() ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/_______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/_______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000066"> <font face="Times New Roman">is the suggestion that the matplotlib algorithm is correct in computing PSD amplitudes?<br> <br> btw, increasing nFFT increases the number of points used in the FFT, which <br> increases the spectral <b>frequency</b> resolution (smaller binwidth) but for a limited data set<br> of N points, as is the case in the example, decreases the number of data averages <br> thereby decreasing the spectral <b>amplitude</b> resolution (accuracy). keep in mind that<br> just changing nFFT without making a corresponding change in overlap will oversample<br> the data, thereby skewing the amplitudes. <br> <br> in any case, the amplitude change is not approaching infinity, even if you set nFFT to<br> 6000, which is the length of the timeseries, the amplitudes are ~35dB, adjust variable ymax<br> to see this. <br> <br> to review issues of spectral/amplitude resolution, windowing/overlap, etc, a good<br> reference is Random Data by Bendat &Piersol:<br> <a class="moz-txt-link-freetext" href="http://www.amazon.com/Random-Data-Analysis-Measurement-Procedures/dp/0471317330">http://www.amazon.com/Random-Data-Analysis-Measurement-Procedures/dp/0471317330</a><br> <br> i remain unconvinced that the PSD amplitudes are reasonable, which only leaves Matlab<br> as an alternative... that's a hard pill to swallow... matplotlib is clearly preferable.<br> <br> </font><br> <a class="moz-txt-link-abbreviated" href="mailto:bre...@un...">bre...@un...</a> wrote: <blockquote cite="mid:OFB...@un..." type="cite"><br> <font face="sans-serif" size="2">If you lower the resolution (ie increase nFFT) in your program you will see that the PSD does indeed increase. I think it may be on the way to infinity.</font> <br> <br> <br> <br> <br> <table width="100%"> <tbody> <tr valign="top"> <td width="40%"><font face="sans-serif" size="1"><b>Joseph Park <a class="moz-txt-link-rfc2396E" href="mailto:jp...@is..."><jp...@is...></a></b> </font><br> <font face="sans-serif" size="1">Sent by: <a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> <p><font face="sans-serif" size="1">26/10/2007 10:05 AM</font> </p> </td> <td width="59%"> <table width="100%"> <tbody> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">To</font></div> </td> <td><font face="sans-serif" size="1"><a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">cc</font></div> </td> <td><br> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">Subject</font></div> </td> <td><font face="sans-serif" size="1">Re: [Matplotlib-users] PSD amplitudes</font></td> </tr> </tbody> </table> <br> <table> <tbody> <tr valign="top"> <td> <br> </td> <td><br> </td> </tr> </tbody> </table> <br> </td> </tr> </tbody> </table> <br> <br> <br> <font color="#000066" face="sans-serif" size="2">Shouldn't the PSD for a simple sine wave tend to infinity<br> </font><font color="#000066" face="Courier New" size="2"><br> the spectral resolution will impact the amplitude, if you<br> are <b>not</b> dealing with a density. by definition a spectral density<br> has applied the bandwidth resolution correction. the PSD amplitude<br> should correspond to the RMS amplitude of the sine wave. in the<br> example a 1VRMS amplitude sine wave (time domain) should have a<br> PSD power of 20*log(1V) = 0dB. The windowing function will impact<br> this ideal number a bit, but certainly not by 25dB.</font><font color="#000066" size="3"><br> </font><font color="blue" size="3"><u><br> </u></font><a moz-do-not-send="true" href="mailto:bre...@un..."><font color="blue" size="3"><u>bre...@un...</u></font></a><font color="#000066" size="3"> wrote: </font> <br> <font color="#000066" face="sans-serif" size="2"><br> Are you sure that the answer should be zero? Shouldn't the PSD for a simple sine wave tend to infinity (depending on the resolution)?</font><font color="#000066" size="3"> <br> <br> <br> <br> </font> <table width="100%"> <tbody> <tr valign="top"> <td width="54%"><font color="#000066" face="sans-serif" size="1"><b>Joseph Park </b></font><a moz-do-not-send="true" href="mailto:jp...@is..."><font color="blue" face="sans-serif" size="1"><b><u><jp...@is...></u></b></font></a><font color="#000066" face="sans-serif" size="1"> <br> Sent by: </font><a moz-do-not-send="true" href="mailto:mat...@li..."><font color="blue" face="sans-serif" size="1"><u>mat...@li...</u></font></a><font color="#000066" size="3"> </font> <p><font color="#000066" face="sans-serif" size="1">26/10/2007 06:50 AM</font><font color="#000066" size="3"> </font></p> </td> <td width="45%"><br> <table width="100%"> <tbody> <tr valign="top"> <td width="17%"> <div align="right"><font color="#000066" face="sans-serif" size="1">To</font></div> </td> <td width="82%"><a moz-do-not-send="true" href="mailto:mat...@li..."><font color="blue" face="sans-serif" size="1"><u>mat...@li...</u></font></a><font color="#000066" size="3"> </font></td> </tr> <tr valign="top"> <td> <div align="right"><font color="#000066" face="sans-serif" size="1">cc</font></div> </td> <td><br> </td> </tr> <tr valign="top"> <td> <div align="right"><font color="#000066" face="sans-serif" size="1">Subject</font></div> </td> <td><font color="#000066" face="sans-serif" size="1">[Matplotlib-users] PSD amplitudes</font></td> </tr> </tbody> </table> <br> <br> <table width="100%"> <tbody> <tr valign="top"> <td width="50%"> <br> </td> <td width="50%"><br> </td> </tr> </tbody> </table> <br> </td> </tr> </tbody> </table> <br> <font color="#000066" size="3"><br> <br> <br> Please try the attached script.<br> The answer should be ~0 dB for each of the frequencies.<br> Most likely a simple scaling issue/parameter of which i'm ignorant.<br> </font><font color="#000066" size="3"><tt><br> -- </tt></font><font color="#000066" size="3"><br> <br> <br> ______________________________________________________________________<br> This email has been scanned by the MessageLabs Email Security System.<br> For more information please visit </font><a moz-do-not-send="true" href=" color="blue" size="3"><u>http://www.numpy.org/"><font color="blue" size="2"><tt><u>www.numpy.org</u></tt></font></a><font color="#000066" size="2"><tt> numpy.scipy.org<br> except ImportError: <br> print "Failed to import numpy."<br> <br> try:<br> import pylab as mp # matplotlib.sourceforge.net<br> from matplotlib.font_manager import fontManager, FontProperties <br> except ImportError: <br> print "Failed to import pylab."<br> <br> <br> # Default Parameters<br> nFFT = 1024 <br> overlap = 512 <br> freqSample = 100. <br> PlotAll = False<br> WriteOutput = False<br> <br> ##----------------------------------------------------------------------------<br> ## Main module<br> def main():<br> <br> deltaF = freqSample/nFFT # Frequency resolution in Hz<br> deltaT = 1./freqSample # Sample interval<br> print 'Sample interval %e (s)' % (deltaT)<br> print 'Frequency resolution %e (Hz)' % (deltaF)<br> <br> # Setup Plots<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.title ( "PSD" )<br> mp.ylabel( "(dB)" )<br> mp.xlabel( "Frequency (Hz)" )<br> legendFont = FontProperties(size='small')<br> <br> ymin = 0<br> ymax = 30<br> xmin = 0<br> xmax = 50<br> xticks = 5<br> yticks = 5<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.title ( "Input Timeseries" )<br> mp.ylabel( "Amplitude" )<br> mp.xlabel( "time (s)" )<br> <br> # Create some synthetic data with unity RMS amplitude = 0 dB<br> # ----------------------------------------------------------------------<br> t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval<br> A = 1.414<br> <br> y0 = A * sin( 2. * math.pi * 5 * t )<br> y1 = A * sin( 2. * math.pi * 10 * t )<br> y2 = A * sin( 2. * math.pi * 20 * t )<br> y3 = A * sin( 2. * math.pi * 30 * t )<br> y4 = A * sin( 2. * math.pi * 40 * t )<br> y5 = A * sin( 2. * math.pi * 45 * t )<br> <br> dataList = [ y0, y1, y2, y3, y4, y5 ]<br> <br> for data in dataList:<br> inputDataLen = len( data )<br> numAverages = math.floor( inputDataLen / (overlap) ) - 1<br> normalizedRandomError = 1./math.sqrt( numAverages )<br> print "%d points" % ( inputDataLen ),<br> print "%d averages" % (numAverages),<br> print "normalized random error %.3f" % ( normalizedRandomError )<br> <br> mp.figure(1)<br> (Pxx, freqs) = mp.psd( data,<br> NFFT = nFFT,<br> Fs = freqSample,<br> noverlap = overlap,<br> lw = 2,<br> label = '' )<br> <br> Pxx_dB = 10.*log10(Pxx)<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.plot(t, data, label='' )<br> <br> # Write Output data<br> # ----------------------------------------------------------------------<br> if WriteOutput:<br> PxxLen = len(Pxx)<br> OutputFile = "PSD.dat"<br> fdOutFile = open( OutputFile, 'a' )<br> fdOutFile.write( "Freq\t\tPower(dB)\n" )<br> for i in range(PxxLen):<br> fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) )<br> fdOutFile.close()<br> print "Wrote ", PxxLen, " points to ", OutputFile<br> <br> <br> # Show the Plot<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.axis([xmin, xmax, ymin, ymax])<br> mp.xticks( arange(xmin, xmax+1, xticks) )<br> mp.yticks( arange(ymin, ymax , yticks) )<br> mp.title('')<br> mp.xlabel('Frequency (Hz)')<br> mp.ylabel(r'$\tt{dB re V^2/Hz}$')<br> #mp.legend( loc='upper right', prop=legendFont )<br> if WriteOutput:<br> plotFileName = "PSD.png"<br> mp.savefig( plotFileName )<br> print "Wrote png image to ", plotFileName<br> if PlotAll:<br> mp.figure(2)<br> #mp.legend( loc='lower left', prop=legendFont )<br> mp.show()<br> <br> print "Normal Exit"<br> ## Main module<br> ##----------------------------------------------------------------------------<br> <br> ##----------------------------------------------------------------------------<br> ## Provide for cmd line invocation<br> if __name__ == "__main__":<br> main()<br> <br> -------------------------------------------------------------------------<br> This SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> </tt></font><a moz-do-not-send="true" href=" color="blue" size="2"><tt><u>https://lists.sourceforge.net/lists/listinfo/matplotlib-users"><font color="blue" size="2"><tt><u>http://www.messagelabs.com/email" rel="nofollow">http://www.messagelabs.com/email">http://www.messagelabs.com/email</a> <br> ______________________________________________________________________</font><font size="2"><tt>-------------------------------------------------------------------------<br> This SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> <a class="moz-txt-link-freetext" href="http://get.splunk.com/_______________________________________________">http://get.splunk.com/_______________________________________________</a><br> Matplotlib-users mailing list<br> <a class="moz-txt-link-abbreviated" href="mailto:Mat...@li...">Mat...@li...</a><br> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/matplotlib-users">https://lists.sourceforge.net/lists/listinfo/matplotlib-users</a><br> </tt></font> <br> <br> UNITED GROUP<br> This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access.<br> If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.<br> </blockquote> <br> <pre class="moz-signature" cols="80">-- </pre> </body> </html>
If you lower the resolution (ie increase nFFT) in your program you will see that the PSD does indeed increase. I think it may be on the way to infinity. Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 10:05 AM To mat...@li... cc Subject Re: [Matplotlib-users] PSD amplitudes Shouldn't the PSD for a simple sine wave tend to infinity the spectral resolution will impact the amplitude, if you are not dealing with a density. by definition a spectral density has applied the bandwidth resolution correction. the PSD amplitude should correspond to the RMS amplitude of the sine wave. in the example a 1VRMS amplitude sine wave (time domain) should have a PSD power of 20*log(1V) = 0dB. The windowing function will impact this ideal number a bit, but certainly not by 25dB. bre...@un... wrote: Are you sure that the answer should be zero? Shouldn't the PSD for a simple sine wave tend to infinity (depending on the resolution)? Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 06:50 AM To mat...@li... cc Subject [Matplotlib-users] PSD amplitudes Please try the attached script. The answer should be ~0 dB for each of the frequencies. Most likely a simple scaling issue/parameter of which i'm ignorant. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ##---------------------------------------------------------------------------- ## Name: psd_scale.py ## ## Purpose: Test Power Spectral Density of 1Vrms data ## Depends on Python SciPy and NumPy ## ## Author: J Park ## ## Created: 10/17/07 ## ## Modified: ##---------------------------------------------------------------------------- try: from numpy import * # www.numpy.org numpy.scipy.org except ImportError: print "Failed to import numpy." try: import pylab as mp # matplotlib.sourceforge.net from matplotlib.font_manager import fontManager, FontProperties except ImportError: print "Failed to import pylab." # Default Parameters nFFT = 1024 overlap = 512 freqSample = 100. PlotAll = False WriteOutput = False ##---------------------------------------------------------------------------- ## Main module def main(): deltaF = freqSample/nFFT # Frequency resolution in Hz deltaT = 1./freqSample # Sample interval print 'Sample interval %e (s)' % (deltaT) print 'Frequency resolution %e (Hz)' % (deltaF) # Setup Plots # ---------------------------------------------------------------------- mp.figure(1) mp.title ( "PSD" ) mp.ylabel( "(dB)" ) mp.xlabel( "Frequency (Hz)" ) legendFont = FontProperties(size='small') ymin = 0 ymax = 30 xmin = 0 xmax = 50 xticks = 5 yticks = 5 if PlotAll: mp.figure(2) mp.title ( "Input Timeseries" ) mp.ylabel( "Amplitude" ) mp.xlabel( "time (s)" ) # Create some synthetic data with unity RMS amplitude = 0 dB # ---------------------------------------------------------------------- t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval A = 1.414 y0 = A * sin( 2. * math.pi * 5 * t ) y1 = A * sin( 2. * math.pi * 10 * t ) y2 = A * sin( 2. * math.pi * 20 * t ) y3 = A * sin( 2. * math.pi * 30 * t ) y4 = A * sin( 2. * math.pi * 40 * t ) y5 = A * sin( 2. * math.pi * 45 * t ) dataList = [ y0, y1, y2, y3, y4, y5 ] for data in dataList: inputDataLen = len( data ) numAverages = math.floor( inputDataLen / (overlap) ) - 1 normalizedRandomError = 1./math.sqrt( numAverages ) print "%d points" % ( inputDataLen ), print "%d averages" % (numAverages), print "normalized random error %.3f" % ( normalizedRandomError ) mp.figure(1) (Pxx, freqs) = mp.psd( data, NFFT = nFFT, Fs = freqSample, noverlap = overlap, lw = 2, label = '' ) Pxx_dB = 10.*log10(Pxx) if PlotAll: mp.figure(2) mp.plot(t, data, label='' ) # Write Output data # ---------------------------------------------------------------------- if WriteOutput: PxxLen = len(Pxx) OutputFile = "PSD.dat" fdOutFile = open( OutputFile, 'a' ) fdOutFile.write( "Freq\t\tPower(dB)\n" ) for i in range(PxxLen): fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) ) fdOutFile.close() print "Wrote ", PxxLen, " points to ", OutputFile # Show the Plot # ---------------------------------------------------------------------- mp.figure(1) mp.axis([xmin, xmax, ymin, ymax]) mp.xticks( arange(xmin, xmax+1, xticks) ) mp.yticks( arange(ymin, ymax , yticks) ) mp.title('') mp.xlabel('Frequency (Hz)') mp.ylabel(r'$\tt{dB re V^2/Hz}$') #mp.legend( loc='upper right', prop=legendFont ) if WriteOutput: plotFileName = "PSD.png" mp.savefig( plotFileName ) print "Wrote png image to ", plotFileName if PlotAll: mp.figure(2) #mp.legend( loc='lower left', prop=legendFont ) mp.show() print "Normal Exit" ## Main module ##---------------------------------------------------------------------------- ##---------------------------------------------------------------------------- ## Provide for cmd line invocation if __name__ == "__main__": main() ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/_______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000066"> <font face="sans-serif" size="2">Shouldn't the PSD for a simple sine wave tend to infinity<br> <br> <font face="Courier New, Courier, monospace">the spectral resolution will impact the amplitude, if you<br> are <b>not</b> dealing with a density. by definition a spectral density<br> has applied the bandwidth resolution correction. the PSD amplitude<br> should correspond to the RMS amplitude of the sine wave. in the<br> example a 1VRMS amplitude sine wave (time domain) should have a<br> PSD power of 20*log(1V) = 0dB. The windowing function will impact<br> this ideal number a bit, but certainly not by 25dB.<br> </font></font><br> <a class="moz-txt-link-abbreviated" href="mailto:bre...@un...">bre...@un...</a> wrote: <blockquote cite="mid:OF3...@un..." type="cite"><br> <font face="sans-serif" size="2">Are you sure that the answer should be zero? Shouldn't the PSD for a simple sine wave tend to infinity (depending on the resolution)?</font> <br> <br> <br> <br> <br> <table width="100%"> <tbody> <tr valign="top"> <td width="40%"><font face="sans-serif" size="1"><b>Joseph Park <a class="moz-txt-link-rfc2396E" href="mailto:jp...@is..."><jp...@is...></a></b> </font><br> <font face="sans-serif" size="1">Sent by: <a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> <p><font face="sans-serif" size="1">26/10/2007 06:50 AM</font> </p> </td> <td width="59%"> <table width="100%"> <tbody> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">To</font></div> </td> <td><font face="sans-serif" size="1"><a class="moz-txt-link-abbreviated" href="mailto:mat...@li...">mat...@li...</a></font> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">cc</font></div> </td> <td><br> </td> </tr> <tr valign="top"> <td> <div align="right"><font face="sans-serif" size="1">Subject</font></div> </td> <td><font face="sans-serif" size="1">[Matplotlib-users] PSD amplitudes</font></td> </tr> </tbody> </table> <br> <table> <tbody> <tr valign="top"> <td> <br> </td> <td><br> </td> </tr> </tbody> </table> <br> </td> </tr> </tbody> </table> <br> <br> <br> <font color="#000066" size="3">Please try the attached script.<br> The answer should be ~0 dB for each of the frequencies.<br> Most likely a simple scaling issue/parameter of which i'm ignorant.<br> </font> <br> <font color="#000066" size="3"><tt>-- <br> </tt></font> <br> <font color="#000066" size="3"><br> ______________________________________________________________________<br> This email has been scanned by the MessageLabs Email Security System.<br> For more information please visit <a class="moz-txt-link-freetext" href="http://www.messagelabs.com/email">http://www.messagelabs.com/email</a> <br> ______________________________________________________________________</font><font size="2"><tt>##----------------------------------------------------------------------------<br> ## Name: psd_scale.py<br> ## <br> ## Purpose: Test Power Spectral Density of 1Vrms data<br> ## Depends on Python SciPy and NumPy<br> ## <br> ## Author: J Park<br> ##<br> ## Created: 10/17/07<br> ##<br> ## Modified: <br> ##----------------------------------------------------------------------------<br> <br> try:<br> from numpy import * # <a class="moz-txt-link-abbreviated" href="http://www.numpy.org">www.numpy.org</a> numpy.scipy.org<br> except ImportError: <br> print "Failed to import numpy."<br> <br> try:<br> import pylab as mp # matplotlib.sourceforge.net<br> from matplotlib.font_manager import fontManager, FontProperties <br> except ImportError: <br> print "Failed to import pylab."<br> <br> <br> # Default Parameters<br> nFFT = 1024 <br> overlap = 512 <br> freqSample = 100. <br> PlotAll = False<br> WriteOutput = False<br> <br> ##----------------------------------------------------------------------------<br> ## Main module<br> def main():<br> <br> deltaF = freqSample/nFFT # Frequency resolution in Hz<br> deltaT = 1./freqSample # Sample interval<br> print 'Sample interval %e (s)' % (deltaT)<br> print 'Frequency resolution %e (Hz)' % (deltaF)<br> <br> # Setup Plots<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.title ( "PSD" )<br> mp.ylabel( "(dB)" )<br> mp.xlabel( "Frequency (Hz)" )<br> legendFont = FontProperties(size='small')<br> <br> ymin = 0<br> ymax = 30<br> xmin = 0<br> xmax = 50<br> xticks = 5<br> yticks = 5<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.title ( "Input Timeseries" )<br> mp.ylabel( "Amplitude" )<br> mp.xlabel( "time (s)" )<br> <br> # Create some synthetic data with unity RMS amplitude = 0 dB<br> # ----------------------------------------------------------------------<br> t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval<br> A = 1.414<br> <br> y0 = A * sin( 2. * math.pi * 5 * t )<br> y1 = A * sin( 2. * math.pi * 10 * t )<br> y2 = A * sin( 2. * math.pi * 20 * t )<br> y3 = A * sin( 2. * math.pi * 30 * t )<br> y4 = A * sin( 2. * math.pi * 40 * t )<br> y5 = A * sin( 2. * math.pi * 45 * t )<br> <br> dataList = [ y0, y1, y2, y3, y4, y5 ]<br> <br> for data in dataList:<br> inputDataLen = len( data )<br> numAverages = math.floor( inputDataLen / (overlap) ) - 1<br> normalizedRandomError = 1./math.sqrt( numAverages )<br> print "%d points" % ( inputDataLen ),<br> print "%d averages" % (numAverages),<br> print "normalized random error %.3f" % ( normalizedRandomError )<br> <br> mp.figure(1)<br> (Pxx, freqs) = mp.psd( data,<br> NFFT = nFFT,<br> Fs = freqSample,<br> noverlap = overlap,<br> lw = 2,<br> label = '' )<br> <br> Pxx_dB = 10.*log10(Pxx)<br> <br> if PlotAll:<br> mp.figure(2)<br> mp.plot(t, data, label='' )<br> <br> # Write Output data<br> # ----------------------------------------------------------------------<br> if WriteOutput:<br> PxxLen = len(Pxx)<br> OutputFile = "PSD.dat"<br> fdOutFile = open( OutputFile, 'a' )<br> fdOutFile.write( "Freq\t\tPower(dB)\n" )<br> for i in range(PxxLen):<br> fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) )<br> fdOutFile.close()<br> print "Wrote ", PxxLen, " points to ", OutputFile<br> <br> <br> # Show the Plot<br> # ----------------------------------------------------------------------<br> mp.figure(1)<br> mp.axis([xmin, xmax, ymin, ymax])<br> mp.xticks( arange(xmin, xmax+1, xticks) )<br> mp.yticks( arange(ymin, ymax , yticks) )<br> mp.title('')<br> mp.xlabel('Frequency (Hz)')<br> mp.ylabel(r'$\tt{dB re V^2/Hz}$')<br> #mp.legend( loc='upper right', prop=legendFont )<br> if WriteOutput:<br> plotFileName = "PSD.png"<br> mp.savefig( plotFileName )<br> print "Wrote png image to ", plotFileName<br> if PlotAll:<br> mp.figure(2)<br> #mp.legend( loc='lower left', prop=legendFont )<br> mp.show()<br> <br> print "Normal Exit"<br> ## Main module<br> ##----------------------------------------------------------------------------<br> <br> ##----------------------------------------------------------------------------<br> ## Provide for cmd line invocation<br> if __name__ == "__main__":<br> main()<br> <br> -------------------------------------------------------------------------<br> This SF.net email is sponsored by: Splunk Inc.<br> Still grepping through log files to find problems? Stop.<br> Now Search log events and configuration files using AJAX and a browser.<br> Download your FREE copy of Splunk now >> <a class="moz-txt-link-freetext" href="http://get.splunk.com/_______________________________________________">http://get.splunk.com/_______________________________________________</a><br> Matplotlib-users mailing list<br> <a class="moz-txt-link-abbreviated" href="mailto:Mat...@li...">Mat...@li...</a><br> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/matplotlib-users">https://lists.sourceforge.net/lists/listinfo/matplotlib-users</a><br> </tt></font> <br> <br> UNITED GROUP<br> This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access.<br> If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.<br> </blockquote> <br> <pre class="moz-signature" cols="80">-- </pre> </body> </html>
Are you sure that the answer should be zero? Shouldn't the PSD for a simple sine wave tend to infinity (depending on the resolution)? Joseph Park <jp...@is...> Sent by: mat...@li... 26/10/2007 06:50 AM To mat...@li... cc Subject [Matplotlib-users] PSD amplitudes Please try the attached script. The answer should be ~0 dB for each of the frequencies. Most likely a simple scaling issue/parameter of which i'm ignorant. -- ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ ##---------------------------------------------------------------------------- ## Name: psd_scale.py ## ## Purpose: Test Power Spectral Density of 1Vrms data ## Depends on Python SciPy and NumPy ## ## Author: J Park ## ## Created: 10/17/07 ## ## Modified: ##---------------------------------------------------------------------------- try: from numpy import * # www.numpy.org numpy.scipy.org except ImportError: print "Failed to import numpy." try: import pylab as mp # matplotlib.sourceforge.net from matplotlib.font_manager import fontManager, FontProperties except ImportError: print "Failed to import pylab." # Default Parameters nFFT = 1024 overlap = 512 freqSample = 100. PlotAll = False WriteOutput = False ##---------------------------------------------------------------------------- ## Main module def main(): deltaF = freqSample/nFFT # Frequency resolution in Hz deltaT = 1./freqSample # Sample interval print 'Sample interval %e (s)' % (deltaT) print 'Frequency resolution %e (Hz)' % (deltaF) # Setup Plots # ---------------------------------------------------------------------- mp.figure(1) mp.title ( "PSD" ) mp.ylabel( "(dB)" ) mp.xlabel( "Frequency (Hz)" ) legendFont = FontProperties(size='small') ymin = 0 ymax = 30 xmin = 0 xmax = 50 xticks = 5 yticks = 5 if PlotAll: mp.figure(2) mp.title ( "Input Timeseries" ) mp.ylabel( "Amplitude" ) mp.xlabel( "time (s)" ) # Create some synthetic data with unity RMS amplitude = 0 dB # ---------------------------------------------------------------------- t = mp.arange(0., 60., deltaT) # 60 seconds at deltaT interval A = 1.414 y0 = A * sin( 2. * math.pi * 5 * t ) y1 = A * sin( 2. * math.pi * 10 * t ) y2 = A * sin( 2. * math.pi * 20 * t ) y3 = A * sin( 2. * math.pi * 30 * t ) y4 = A * sin( 2. * math.pi * 40 * t ) y5 = A * sin( 2. * math.pi * 45 * t ) dataList = [ y0, y1, y2, y3, y4, y5 ] for data in dataList: inputDataLen = len( data ) numAverages = math.floor( inputDataLen / (overlap) ) - 1 normalizedRandomError = 1./math.sqrt( numAverages ) print "%d points" % ( inputDataLen ), print "%d averages" % (numAverages), print "normalized random error %.3f" % ( normalizedRandomError ) mp.figure(1) (Pxx, freqs) = mp.psd( data, NFFT = nFFT, Fs = freqSample, noverlap = overlap, lw = 2, label = '' ) Pxx_dB = 10.*log10(Pxx) if PlotAll: mp.figure(2) mp.plot(t, data, label='' ) # Write Output data # ---------------------------------------------------------------------- if WriteOutput: PxxLen = len(Pxx) OutputFile = "PSD.dat" fdOutFile = open( OutputFile, 'a' ) fdOutFile.write( "Freq\t\tPower(dB)\n" ) for i in range(PxxLen): fdOutFile.write( "%.4e\t%.3f\n" % ( freqs[i], Pxx_dB[i] ) ) fdOutFile.close() print "Wrote ", PxxLen, " points to ", OutputFile # Show the Plot # ---------------------------------------------------------------------- mp.figure(1) mp.axis([xmin, xmax, ymin, ymax]) mp.xticks( arange(xmin, xmax+1, xticks) ) mp.yticks( arange(ymin, ymax , yticks) ) mp.title('') mp.xlabel('Frequency (Hz)') mp.ylabel(r'$\tt{dB re V^2/Hz}$') #mp.legend( loc='upper right', prop=legendFont ) if WriteOutput: plotFileName = "PSD.png" mp.savefig( plotFileName ) print "Wrote png image to ", plotFileName if PlotAll: mp.figure(2) #mp.legend( loc='lower left', prop=legendFont ) mp.show() print "Normal Exit" ## Main module ##---------------------------------------------------------------------------- ##---------------------------------------------------------------------------- ## Provide for cmd line invocation if __name__ == "__main__": main() ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users UNITED GROUP This email message is the property of United Group. The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, you may not disclose, copy or distribute this email, nor take or omit to take any action in reliance on it. United Group accepts no liability for any damage caused by this email or any attachments due to viruses, interference, interception, corruption or unauthorised access. If you have received this email in error, please notify United Group immediately by email to the sender's email address and delete this document.