Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Интерполяция функции


Автор: BBC 26.3.2005, 09:46
Подскажите пожайлуста! Проблема:
Запись синусоиды 4300 кГц формат PCM 11025 16 bit, читаю из файла, вывожу на экран отчеты,соответствующие амплитудам в файле, строю огибающую методом интерполяции функции кубическими сплайнами с сайта http://alglib.manual.ru/interpolation/spline3.php (spline3buildtable (..),spline3interpolate(..)) и получаю довольно ощутимые искажения формы сигнала. BoundL и BoundR при этом приравнял к нулю, т.к. не понял, как их определить. Вопрос: каким методом лучше всего восстановить огибающую гармонического сигнала, или если проблема в BoundL,BoundR как их определять в моем случае ? Заранее спасибо!

Автор: Guest 4.4.2005, 09:20
Как я понял BoundL,BoundL - это полоса сигнала, может попробывать задать BoundL - 0, а BoundL - 4300000

Автор: podval 6.4.2005, 20:55
BoundL и BoundR задаются в зависимости от типа граничного условия (DiffN == 0 или 1). Т.е. это значение соответствующей производной на границе. Конкретное значение - см. по полученным амплитудам и считай.

Автор: BBC 6.4.2005, 22:16
Спасибо за советы, проблема снята. Сделал через
цифровой НЧ фильтр, результат удовлетворяет.

Автор: atavinta 31.1.2008, 09:13
Здесь нужна не интерполяция, а неравномерная децемация. Выделяй локальные максимумы, а потом уже их интерполируй.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)