Подскажите пожалуйста что можно почитать или покавырять, чтоб понять как с помощью БФП строить спектр wav файла?
Т.е. интересует по какому принципу брать шаг? Какой буфер использовать? И на что это влияет?
Здравствуйте, spacer123, Вы писали:
S>Подскажите пожалуйста что можно почитать или покавырять, чтоб понять как с помощью БФП строить спектр wav файла? S>Т.е. интересует по какому принципу брать шаг? Какой буфер использовать? И на что это влияет?
Бери частоты кратные двойке, БПФ по моему всегда так и делается.
Здравствуйте, spacer123, Вы писали:
S>Подскажите пожалуйста что можно почитать или покавырять, чтоб понять как с помощью БФП строить спектр wav файла? S>Т.е. интересует по какому принципу брать шаг? Какой буфер использовать? И на что это влияет?
Здравствуйте, spacer123, Вы писали:
S>Подскажите пожалуйста что можно почитать или покавырять, чтоб понять как с помощью БФП строить спектр wav файла? S>Т.е. интересует по какому принципу брать шаг? Какой буфер использовать? И на что это влияет?
Длина FFT обычно берется 512-4096. Все зависит от того какое разрешение по частоте нужно получить. При построении спектрограммы выборка данных может вестись блоками с 50% перекрытием. При этом перед FFT каждый болк должен умножаться на оконную ф-ию (например, Хемминга или Ханна). В matlab есть финкция specgram — можешь посмотреть как она реализована.
Здравствуйте, jhng, Вы писали:
S>>Подскажите пожалуйста что можно почитать или покавырять, чтоб понять как с помощью БФП строить спектр wav файла? S>>Т.е. интересует по какому принципу брать шаг? Какой буфер использовать? И на что это влияет? J>Длина FFT обычно берется 512-4096. Все зависит от того какое разрешение по частоте нужно получить. При построении спектрограммы выборка данных может вестись блоками с 50% перекрытием. При этом перед FFT каждый болк должен умножаться на оконную ф-ию (например, Хемминга или Ханна). В matlab есть финкция specgram — можешь посмотреть как она реализована.
А как зависит получаемая частота от длины?
Т.е. получается что берется определенная длина, а потом в зависимости от перекрытия и частоты дескритизации высчитывается время шага?
Здравствуйте, spacer123, Вы писали:
S>А как зависит получаемая частота от длины?
Частота получаеься очень просто. Допустим у нас есть wav файл с частотой дискретизации 44,1 кГц. Если длина БПФ скажем 1024, то соответственно на каждый полученый коэффициент приходится 1/1024 от чатоты дискретизации. При отображении вторая половина коэфиициентов просто отбрасывается. Тогда мы увидим частоты от 0 до 22,05 кГц с разрешением в 512 точек. S>Т.е. получается что берется определенная длина, а потом в зависимости от перекрытия и частоты дескритизации высчитывается время шага?
Длина шага зависит только от длины БПФ и перекрытия (например, (длина БПФ) / 2), а частота дискретизации может быть любая. В принципе можно брать и любой другой процент перекрытия, но обычно выбирают 50%, чтобы не заморачиваться с расчетами и буферами.
Здравствуйте, jhng, Вы писали:
J>Здравствуйте, spacer123, Вы писали:
S>>А как зависит получаемая частота от длины? J>Частота получаеься очень просто. Допустим у нас есть wav файл с частотой дискретизации 44,1 кГц. Если длина БПФ скажем 1024, то соответственно на каждый полученый коэффициент приходится 1/1024 от чатоты дискретизации. При отображении вторая половина коэфиициентов просто отбрасывается. Тогда мы увидим частоты от 0 до 22,05 кГц с разрешением в 512 точек. S>>Т.е. получается что берется определенная длина, а потом в зависимости от перекрытия и частоты дескритизации высчитывается время шага? J>Длина шага зависит только от длины БПФ и перекрытия (например, (длина БПФ) / 2), а частота дискретизации может быть любая. В принципе можно брать и любой другой процент перекрытия, но обычно выбирают 50%, чтобы не заморачиваться с расчетами и буферами.