Я разрабатываю научное приложение в Windows Forms (VC++ 2010), которое управляет относительно новым электронным устройством. Я управляю им дополнительной, завернутой библиотекой, написанной на C. После первоначальной настройки всех параметров это приложение запускает измерение в устройстве. Затем он отправляет в мое приложение огромные данные из более 200 тыс. Выборок int с существенной скоростью - предположим, что это 50 наборов данных в секунду.Эффективный способ сокращения данных для графика в реальном времени
Теперь мне нужно построить мои данные в реальном времени, используя диаграмму Windows Forms. Было бы идеально иметь 750 образцов, построенных внутри диаграммы со скоростью около 30 FPS. Проблема, с которой я столкнулся, заключается в алгоритме быстрого восстановления базы данных без потери надежности графика.
Мои идеи (данные oscilating вокруг значения = 127):
Выберите 750 баллов, просто выбрав каждый (200 000/750) -й точки
Группа данных и расчета среднего значения
Группируйте данные и выберите максимум или минимум (в зависимости от общего размещения в группе - если большинство из них выше 127 - выберите минимальный, другой максимум).
Какой один (если таковые имеются) из тех, решение является наилучшим учитывая, что я должен построить данные на скорости в режиме реального времени и сюжета не должны пропустить пятна, где мы имеем какой-либо значительный сигнал (похожий на вид сужен , модулированная синусоидальная волна)? Есть ли лучший подход?
И последний вопрос: следует ли использовать таблицу указателей для моего огромного буфера данных или копии данных как данные для графика, учитывая, что у меня всегда есть тот же буфер собранных данных (устройство просто перезаписывает этот буфер постоянно новыми данными)?
Это мой первый пост, поэтому, пожалуйста, сообщите мне, если что-то не так в стиле сообщения.