Спектр matlab возвращает больше КАДРА, чем ожидалось
Я использую следующий код, чтобы получить specgram2D из массива np:
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]
?
1 ответ
Я получил 513 вместо ожидаемых 512, что составляет половину размера окна.
Что я делаю неправильно?
Для действительного сигнала частотный спектр, полученный из дискретного преобразования Фурье (ДПФ), является симметричным, и, следовательно, только половина спектра необходима для описания всего спектра (поскольку другую половину можно получить из симметрии). Вероятно, поэтому вы ожидаете, что размер будет ровно вдвое меньше размера окна ввода 1024.
Проблема заключается в том, что при входах одинакового размера средняя точка спектра попадает точно в частотный интервал. В результате этот частотный интервал имеет свою собственную симметрию. Чтобы проиллюстрировать это, симметрию можно увидеть на следующем графике:
frequency: 0 fs/N ... fs/2 ... fs
bin number: 0 1 ... 511 512 513 ... 1023 1024
^ ^ ^ ^ ^ ^ ^ ^
| | | |-| | | |
| | | | | |
| | |--------| | |
| | | |
| |----------------------------| |
| |
|--------------------------------------|
куда N
это размер БПФ (определяется NFFT=1024
параметр) и fs
частота дискретизации Как вы можете видеть, спектр полностью указан, взяв бины от 0 до 512 включительно. Соответственно, вы должны ожидать, что размер будет floor(N/2)+1
(просто N/2 + 1
с целочисленным делением, но я включил floor
акцентировать округление вниз) или 513 в вашем случае.
Могу ли я просто игнорировать
specgram2D[512]
?
Как было показано ранее, он является неотъемлемой частью спектра, но во многих приложениях не требуется конкретно использовать все отдельные частотные интервалы (т.е. игнорирование этого интервала зависит от того, действительно ли ваше приложение в основном заинтересовано в других частотных компонентах).