我想要频率为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新手。请帮忙
答案 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()