gpt4 book ai didi

matlab spectrum 返回比预期更多的 FRAME

转载 作者:行者123 更新时间:2023-12-04 18:01:35 24 4
gpt4 key购买 nike

我正在使用以下代码从 np 数组中获取 specgram2D:

specgram2D, freq, time = mlab.specgram(samples, Fs=11025, NFFT=1024, window=mlab.window_hanning, noverlap=int(1024 * 0.5))

然后我打印出 specgram2D 就像

print len(specgram2D)  # returns 513

我得到了 513 而不是预期的 512,它是窗口大小的一半。

我做错了什么?

我可以忽略 specgram2D[512] 吗?

最佳答案

I got 513 instead of expected 512 which is half the window size.

What am I doing wrong?

对于实值信号,从 Discrete Fourier Transform (DFT) 获得的频谱是对称的,因此只需要一半的光谱来描述整个光谱(因为另一半可以从对称性中获得)。这可能就是为什么您期望大小正好是输入窗口大小 1024 的一半。

问题在于,对于均匀大小的输入,频谱的中点恰好落在频率仓上。因此,该频率仓是其自身的对称性。为了说明这一点,可以从下图中看出对称性:

frequency:  0   fs/N  ...       fs/2     ...       fs
bin number: 0 1 ... 511 512 513 ... 1023 1024
^ ^ ^ ^ ^ ^ ^ ^
| | | |-| | | |
| | | | | |
| | |--------| | |
| | | |
| |----------------------------| |
| |
|--------------------------------------|

其中 N 是 FFT 的大小(由 NFFT=1024 参数确定),fs 是采样频率。如您所见,通过采用 bin 0 到 512(包含)来完全指定频谱。相应地,您应该期望大小为 floor(N/2)+1(简单的 N/2 + 1 整数除法,但我包括了 floor 以强调向下舍入操作),或者在您的情况下为 513。

Can I just ignore specgram2D[512]?

如前所示,它是频谱的组成部分,但许多应用并不特别需要每个频率仓(即忽略该仓取决于您的应用是否对其他频率分量最感兴趣)。

关于matlab spectrum 返回比预期更多的 FRAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com