Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何使这些FFT相关列表正常工作?_Python_Python 2.7_Fft - Fatal编程技术网

Python 我如何使这些FFT相关列表正常工作?

Python 我如何使这些FFT相关列表正常工作?,python,python-2.7,fft,Python,Python 2.7,Fft,过去几周我一直在做FFT作业。周四就要到了,我想学习Python并编写一个从时域到频域转换的FFT计算器会很酷。现在,我今天刚刚开始学习Python,请大家耐心听我说 不管怎样,我偶然发现了一个问题 频率由以下公式给出: (k*抽样率)/N 其中k是从0到N-1的整数,其中N是样本量 我想要的是一个列表,freq[n],如下所示: freq[n] = k[n]*sample rate/N 我尝试过以下方法,但没有成功: samplerate = 44100 N = 2048 k = range

过去几周我一直在做FFT作业。周四就要到了,我想学习Python并编写一个从时域到频域转换的FFT计算器会很酷。现在,我今天刚刚开始学习Python,请大家耐心听我说

不管怎样,我偶然发现了一个问题

频率由以下公式给出: (k*抽样率)/N

其中k是从0到N-1的整数,其中N是样本量

我想要的是一个列表,freq[n],如下所示:

freq[n] = k[n]*sample rate/N
我尝试过以下方法,但没有成功:

samplerate = 44100
N = 2048
k = range(0,N-1)

for n in range(0,N-1):
    freq = k[n]*samplerate/N

print freq[2]
出现以下错误: TypeError:“int”对象没有属性“getitem

如果你们愿意帮助我,我欠你们一千杯啤酒


编辑:你们对我这样的新手这么好,真让我感到温暖:)谢谢你,问题出在你身上了。 您每次都为freq分配一个新值,覆盖freq的旧值。您在最后一行尝试访问列表的一个元素,但它不是一个列表(它是一个int)。 如果您希望成为所有频率的列表,请将循环中的行更改为:

freq.append(k[n]*samplerate/N)

编辑:也许我没有正确理解你的问题,那么请告诉我们结果会是什么样子。

问题在你的循环中。 您每次都为freq分配一个新值,覆盖freq的旧值。您在最后一行尝试访问列表的一个元素,但它不是一个列表(它是一个int)。 如果您希望成为所有频率的列表,请将循环中的行更改为:

freq.append(k[n]*samplerate/N)

编辑:也许我没有正确理解你的问题,那么请告诉我们结果会是什么样子。

你的问题是
freq
每次都通过
for
循环被重新分配。相反,将其作为相应的
n
值的
列表:

freq = [(k[n] * samplerate) / N for n in range(0, N)]
或者,假设
k[n]==n
,只需

freq = [(n * samplerate) / N for n in range(0, N)]

请注意,Python中的
range
排除了上限

您的问题是,
freq
每次都通过
for
循环重新分配。相反,将其作为相应的
n
值的
列表:

freq = [(k[n] * samplerate) / N for n in range(0, N)]
或者,假设
k[n]==n
,只需

freq = [(n * samplerate) / N for n in range(0, N)]

请注意,Python中的
range
排除了上限

太好了,对我有用!谢谢你们总是对新手很好:)太好了-这对我很有用!谢谢你们总是对新手友好:)非常感谢!感谢大家一直对新手友好:)对于这种方法,请记住在循环之前设置
freq=[]
以避免
namererror
非常感谢!感谢大家一直对新手友好:)对于这种方法,请记住在循环之前设置
freq=[]
,以避免
namererror