matlab spectrum returns FRAME 比预期的多
matlab spectrum returns more FRAME than expected
我正在使用以下代码从 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,它是 window 大小的一半。
我做错了什么?
我可以忽略 specgram2D[512]
吗?
I got 513 instead of expected 512 which is half the window size.
What am I doing wrong?
对于实值信号,从Discrete Fourier Transform (DFT)获得的频谱是对称的,因此只需要一半的频谱来描述整个频谱(因为另一半可以从对称性中获得) .这可能就是为什么您期望大小恰好是输入 window 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 inclusive 完全指定了频谱。相应地,您应该期望大小为 floor(N/2)+1
(简单地 N/2 + 1
进行整数除法,但我包括 floor
以强调向下舍入操作),或者在您的情况下为 513。
Can I just ignore specgram2D[512]
?
如前所示,它是频谱的组成部分,但许多应用程序并不特别需要每个频率仓(即忽略该仓取决于您的应用程序是否对其他频率分量最感兴趣)。
我正在使用以下代码从 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,它是 window 大小的一半。
我做错了什么?
我可以忽略 specgram2D[512]
吗?
I got 513 instead of expected 512 which is half the window size.
What am I doing wrong?
对于实值信号,从Discrete Fourier Transform (DFT)获得的频谱是对称的,因此只需要一半的频谱来描述整个频谱(因为另一半可以从对称性中获得) .这可能就是为什么您期望大小恰好是输入 window 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 inclusive 完全指定了频谱。相应地,您应该期望大小为 floor(N/2)+1
(简单地 N/2 + 1
进行整数除法,但我包括 floor
以强调向下舍入操作),或者在您的情况下为 513。
Can I just ignore
specgram2D[512]
?
如前所示,它是频谱的组成部分,但许多应用程序并不特别需要每个频率仓(即忽略该仓取决于您的应用程序是否对其他频率分量最感兴趣)。