-1

我想拥有频率从 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 新手,所以我找不到问题。请帮忙

4

2 回答 2

5

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

     freq.append(cos(2*pi*i*x))
于 2013-10-27T11:24:08.153 回答
1

这里有几个问题。

首先,附加不适用于列表。您实际上已经用两种不同的方式编写了它。在第二个示例中,您给它一个索引 [i],它只是一个空列表,因此出现错误。

试试这个:

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

第二个问题是,因为您使用的是 i(它是一个整数)和 x(它由整数组成),所以您只会在数组中得到 1,因为它们从不计算除 2* 倍数之外的相位的 cos圆周率。

您需要将 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() 
于 2013-10-27T11:37:03.880 回答