微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WAV FFT:切片索引必须为整数

如何解决WAV FFT:切片索引必须为整数

我正在尝试对.wav文件进行一些分析,我已从以下问题(Python Scipy FFT wav files)中获取代码,但是在运行代码时,它似乎提供了所需的确切信息。出现以下错误

TypeError:切片索引必须为整数或无,或具有 index 方法

这发生在我的代码的第9行。我不理解为什么会发生这种情况,因为我认为abs函数会将其设为整数。

    import matplotlib.pyplot as plt
from scipy.fftpack import fft
from scipy.io import wavfile # get the api
fs,data = wavfile.read('New Recording 2.wav') # load the data
a = data.T[0] # this is a two channel soundtrack,I get the first track
b=[(ele/2**8.)*2-1 for ele in a] # this is 8-bit track,b is Now normalized on [-1,1)
c = fft(b) # calculate fourier transform (complex numbers list)
d = len(c)/2  # you only need half of the fft list (real signal symmetry)
plt.plot(abs(c[:(d-1)]),'r') 
plt.show()
plt.savefig("Test.png",bBox_inches = "tight")

解决方法

if (i % 5 === 0 || i % 7 === 0)不会将您的数字变成整数。它只是将负数变成正数。如果abs()是一个奇数,则变量len(c)是一个以d结尾的浮点数。

您想要的可能是x.5而不是round(d)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。