Python循环返回不同的变量

时间:2013-10-27 11:21:57

标签: python variables loops

我想要频率为1到100的余弦函数,而不是以

的形式写出100行
x=linspace(-500,500,1001)
f1=cos(2*pi*1*x)
f2=cos(2*pi*2*x)
#and so on till 100

我想要一个输出它们的循环,我尝试了这个:

from pylab import *
from numpy import *
freq=[]
x=linspace(-500,500,1001)
for i in range(101):
    freq.append=cos(2*pi*i*x)
freq

然而它不起作用,我尝试了不同的组合,但我总是收到消息:

  freq[i].append=cos(2*pi*i*x)
IndexError: list index out of range

我确信它很简单,但我找不到问题,因为我是python新手。请帮忙

2 个答案:

答案 0 :(得分:5)

这是获得异常的行的正确语法:

     freq.append(cos(2*pi*i*x))

答案 1 :(得分:1)

这里有几个问题。

首先,追加不像列表那样工作。你实际上已经用两种不同的方式写了它。在第二个例子中,你给它一个索引[i],它只是一个空列表,因此是错误。

请改为尝试:

freq.append(cos(2*pi*i*x))

第二个问题是,因为你使用的是i(这是一个整数)和x(由整数组成)你只需要在数组中得到1,因为它们从不计算除了倍数之外的相位的cos 2 * pi。

您需要将x除以某个其他值(可能是缓冲区长度或采样频率,具体取决于您的应用),以确保您将生成所需的信号。

编辑:这是一个示例,它使用缓冲区(1001)中的样本数作为除数打印出每一步的信号,确保每个缓冲区的整个周期数:

from pylab import *
from numpy import *
freq=[]
x=linspace(-500,500,1001)
for i in range(101):
    freq.append(cos(2*pi*i*(x/1001.)))
    plot(freq[-1])
    show()