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 2.7 对Numpy+;Scipy&x2B;matplotlib频谱分析仪代码_Python 2.7_Audio_Numpy_Matplotlib_Scipy - Fatal编程技术网

Python 2.7 对Numpy+;Scipy&x2B;matplotlib频谱分析仪代码

Python 2.7 对Numpy+;Scipy&x2B;matplotlib频谱分析仪代码,python-2.7,audio,numpy,matplotlib,scipy,Python 2.7,Audio,Numpy,Matplotlib,Scipy,我一直在试图理解的底部的代码,虽然遗憾的是,我没有得到任何进展。我不认为我应该理解大部分代码,因为我对FFT的经验有限,但不幸的是,我也很难理解图形是如何生成的。由于我的计算机严重滞后,而且生成图形所需的时间相对较长,我从尝试和错误方法中获得的进展也非常有限 说到这里,我需要一种方法来缩放图形,使其仅显示高达5000 Hz的值,尽管仍然是对数比例。我还想了解wav文件是如何采样的,以及为了每秒采集更多样本,我可以编辑哪些值。有人能解释一下这两点是如何工作的,以及我如何编辑代码以满足这些要求吗?H

我一直在试图理解的底部的代码,虽然遗憾的是,我没有得到任何进展。我不认为我应该理解大部分代码,因为我对FFT的经验有限,但不幸的是,我也很难理解图形是如何生成的。由于我的计算机严重滞后,而且生成图形所需的时间相对较长,我从尝试和错误方法中获得的进展也非常有限


说到这里,我需要一种方法来缩放图形,使其仅显示高达5000 Hz的值,尽管仍然是对数比例。我还想了解wav文件是如何采样的,以及为了每秒采集更多样本,我可以编辑哪些值。有人能解释一下这两点是如何工作的,以及我如何编辑代码以满足这些要求吗?

Hm,我很乐意帮助您理解这些代码。这可能不是最佳实践,可能有几种方法可以改进,欢迎提出建议。但至少它对我有用

功能
stft
在的帮助下执行音频信号的标准。函数
logscale\u spec
获取stft并按对数缩放。这可能有点脏,一定有更好的方法。但这对我很管用
plotstft
是最终通过读取波形文件的函数,它将前面两个函数组合在一起,并使用生成绘图。如果您有一个单声道波形文件,您应该能够调用
plotstft(“/path/to/mono.wav”)

这是一个概述——如果我要更详细地解释一些事情,就这么说吧

回答你的问题。要省去一些频率值:您可以使用
np.fft.fftfreq(binsize,1./sr)
获得fft的频率值。你只需要找到截止值的索引,并留下stft的这个值。 我不明白你的第二个问题。。。您可以通过以下方式查看波形文件的所有样本:

>>> import scipy.io.wavfile as wav
>>> x = wav.read("/path/to/file.wav")
>>> x
(44100, array([4554752, 4848551, 3981874, ..., 2384923, 2040309,  294912], dtype=int32))
>>> x[1]
array([4554752, 4848551, 3981874, ..., 2384923, 2040309,  294912], dtype=int32)

我尝试缩放np.fft.fftfreq(binsize,1./sr)所取的值,尽管它似乎只缩放记号,而不缩放图形本身。我还试图修改freq以达到截止值,但出现了错误。然而,我确实得到了需要以某种方式修改freqs的提示,因此在稍微修改代码之后,我找到了timebins,freqbins=np.shape(ims)[0],np.shape(ims)[1]*hzScale对于某些比率hzScale生成了所需的图形。可悲的是,决议太糟糕了;有什么方法可以改进这一点,还是我采取了错误的方法?(谢谢)哦,对不起!我突然想到这张图是准确的;我给程序输入的wav文件不是正弦波,所以我应该认为有一些普遍的错误。谢谢你的帮助;不要介意。显然,我对程序如何工作的第一个猜测是正确的,我没有想到编辑binsize参数,这导致了所有的麻烦。为所有考虑不周的问题道歉,再次感谢。