Python 我如何使这些FFT相关列表正常工作?
过去几周我一直在做FFT作业。周四就要到了,我想学习Python并编写一个从时域到频域转换的FFT计算器会很酷。现在,我今天刚刚开始学习Python,请大家耐心听我说 不管怎样,我偶然发现了一个问题 频率由以下公式给出: (k*抽样率)/N 其中k是从0到N-1的整数,其中N是样本量 我想要的是一个列表,freq[n],如下所示: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
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