On Dec 26, 8:58 pm, Lie Ryan <lie.1...@gmail.com> wrote: > On 12/27/2011 04:08 AM, Yigit Turgut wrote: > > > > > > > > > > > On Dec 26, 11:28 am, Lie Ryan<lie.1...@gmail.com> wrote: > >> On 12/26/2011 05:27 AM, Yigit Turgut wrote: > > >>> On Dec 25, 7:06 pm, Rick Johnson<rantingrickjohn...@gmail.com> wrote: > >>>> On Dec 25, 9:33 am, Yigit Turgut<y.tur...@gmail.com> wrote: > >>>>> Hi all, > > >>>>> I have a text file as following; > > >>>>> 0.200047 0.000000 > >>>>> 0.200053 0.160000 > >>>>> 0.200059 0.000000 > >>>>> 0.200065 0.080000 > >>>>> 0.200072 0.000000 > >>>>> 0.200078 0.160000 > > >>>>> And I am trying to plot it with ; > > >>>>> filenames = sys.argv[1:] > >>>>> if len(filenames) == 0: > >>>>> filenames = [sys.stdin] > >>>>> for filename in filenames: > >>>>> t,y1 = numpy.genfromtxt(filename, unpack=True) > >>>>> pyplot.plot(t,y1) > >>>>> pyplot.show() > > >>>>> But graph seems weird, not as it supposed to be. Any ideas ? > > >>>> Interesting. Of course "weird" leaves a LOT to be desired. On a scale > >>>> of 1-10, how "weird" is the result? > > >>> I apply a 1Khz test signal just to see if things run smoothly, but I > >>> see spikes at lower and higher ends (logic 0,1) where I should see a > >>> clean rectangle pwm signal. By the look of it I say weirdness is > >>> around 3/10. > > >> What are you expecting? Your data produces something that looks like the > >> plot on the right of this screenshot > >> (http://i44.tinypic.com/wwhlvp.jpg), I don't see anything weird with > >> that; if you are expecting a square-wave-like plot (like on the left), > >> then you should use a square-wave-like data, pyplot wouldn't magically > >> transform a spiked-plot to squared-plot. > > >> Here's what I use to convert the data on right plot to data on left > >> plot, I don't know much about numpy so it might be possible to do it > >> more efficiently or numpy might even have something like it already. > > >> from itertools import izip_longest > >> def to_square(t, y1): > >> sq_data = [[], []] > >> for x,y, xn in izip_longest(data[0], data[1], data[0][1:]): > >> sq_data[0].append(x) > >> sq_data[1].append(y) > >> sq_data[0].append(xn) > >> sq_data[1].append(y) > >> return numpy.array(sq_data, dtype=float) > > > Thanks for the tip. I know that I feed a square wave signal and record > > this data. Thus I believe the situation can be related to sampling > > frequency. > > It is due to sampling frequency, but also because you cannot sample a > square wave perfectly because square wave has infinite steepness at the > transitions. Although if you know the exact timing of the transitions, > it may be possible to reconstruct the transitions perfectly. > > > Couldn't get your code working, maybe because I import the data from > > file. > > not your fault, I made a mistake when copy-pasteing the code, here's the > fixed code: > > from itertools import izip_longest > def to_square(data): > sq_data = [[], []] > for x,y, xn in izip_longest(data[0], data[1], data[0][1:]): > sq_data[0].append(x) > sq_data[1].append(y) > sq_data[0].append(xn) > sq_data[1].append(y) > return numpy.array(sq_data, dtype=float) > > use it like this: > > t,y1 = to_square(numpy.genfromtxt(filename, unpack=True)) > pyplot.plot(t,y1) > pyplot.show()
Significant improvement on the plot, pretty interesting. It runs ok but I need to know how?! (: -- http://mail.python.org/mailman/listinfo/python-list