改变幅度& pylab中numpy.sin(wt)的频率

时间:2011-02-17 11:32:30

标签: python plot signals matplotlib sin

对于另一个项目的一部分,我只需要制作一个频率为f的简单正弦波。

更改“样本”会给pylab图带来一些奇怪的效果,我只是不知道为什么!

使用samples = 500给出频率= 1/50 Hz的图。

使用samples = 1000给出频率= 1/100 Hz的图。

然后使用较大的样本(如5000和10000),绘制的波沿t轴以模式改变幅度。

import numpy as N
f = 10.
w = 2. * N.pi * f
time_interval = 100
samples = 5000
t = N.linspace(0, time_interval, samples)
y = N.sin(w * t)
pylab.plot(t, y)
pylab.show()

这里的任何帮助都会很棒!我只是想要一个基本的正弦波,但似乎无法做到这一点!

4 个答案:

答案 0 :(得分:4)

我认为你对samples有一点误解。它只给出了时间的分辨率。尝试使用time_interval= 1绘图并改变samples(从小值开始,如10,然后逐渐增加)。你会看到。

答案 1 :(得分:1)

为明确提出吃饭的答案,我将time_interval设置为1,并将samples设置为import pylab import numpy as N f = 10. w = 2. * N.pi * f time_interval = 1 fig = pylab.figure() for i, samples in enumerate((5, 50, 500, 5000)): pylab.subplot(2, 2, i+1) pylab.title('%i samples'%samples) t = N.linspace(0, time_interval, samples) y = N.sin(w * t) pylab.plot(t, y, '.-') fig.show() ,如他所说:

time_interval

50个样本显然不足以time_interval为1;这就是5000为{{1}}为100的样本不足的原因。

答案 2 :(得分:1)

导入pylab

X = pylab.arange(0,150,0.2)

Y = pylab.sin(X);

pylab.plot(X,Y)

pylab.show()

答案 3 :(得分:0)

根据给定的参数:频率,F = 10 Hz,时间段,T = 100 s和T = 100 s的样本数,N = 5000。

这意味着,循环数= F * T = 10 * 100 =1000。让我们选择T = 10 / F,以可视化10个循环。这意味着我们将在1秒内从10 Hz正弦波获得10个周期。这也意味着我们在10个周期中将有5000个样本,或者每个周期500个样本,这对于信号复制来说是相当大的。

hot,high,false,yes
cool,normal,true,yes