| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| Здесь нужна не интерполяция, а неравномерная децемация. Выделяй локальные максимумы, а потом уже их интерполируй. |