#c# #graph #statistics #grouping
#c# #График #Статистика #группировка
Вопрос:
Для проекта я провожу измерения давления воздуха с очень большим интервалом (1-5 мс). Если давление изменилось с погрешностью, я добавляю эти данные в свой список. Пример будет выглядеть так:
timestamp (ms) pressure (%)
311 10
714 16
844 4
941 31
977 55
1080 65
1211 27
Эти данные берутся и отображаются в реальном времени, что отлично работает с OxyPlot для WPF.
Данные хранятся в памяти — поэтому нет необходимости обращаться к базе данных, файлу или чему-то еще.
В дополнение к текущим данным я хочу отобразить их в очень специфической группировке, но я не знаю, как это называется (я думаю, кластеризация) и как это сделать.
Но позвольте мне объяснить — я хочу упорядочить данные, чтобы позже построить график, где:
- X = разница во времени с предыдущей записью (в Гц, но это просто 1000 / x)
- Y = давление %
Отредактируйте, чтобы уточнить: для каждой разницы во времени (X) должен быть столбец для каждого значения давления, которое произошло после заданного интервала.
Вот как должен выглядеть результат:
Этот график должен состоять только из последних x записей моего полного списка (например, 1000) и обновляться каждую секунду или около того. Я знаю, как сделать это методом грубой силы, перебирая все и создавая вложенные массивы. Но это, конечно, не может быть оптимальным способом сделать это. Итак, как мне сгруппировать мой набор данных для достижения этой цели?
Любая помощь высоко ценится!
Комментарии:
1. Я думаю, было бы лучше показать нам ваш ввод программы и ожидаемый результат, чтобы сделать его более понятным.
2. Хорошо, мысль была ясна из таблицы и скриншота. Входные данные представляют собой список <Точка>, где X — это временная метка (в мс), а Y — давление в процентах. Выводом должна быть карта временных интервалов (в Герцах) со значением, представляющим собой список всех показаний давления в пределах этого интервала.
Ответ №1:
Уже нашел то, что мне было нужно! Если кто-то ищет что-то подобное, вот что я узнал:
То, что я искал, — это, по сути, преобразование временных данных в их частотные диапазоны. Это очень сложная математическая тема, которую я на самом деле не понимаю — и, к счастью, не должен, потому что есть много библиотек, которые делают именно это.
Такое преобразование называется преобразованием Фурье. С терминами FFT (быстрый ..) или DFT (дискретный ..) есть много ресурсов на выбор.
Надеюсь, это поможет кому-нибудь однажды! 🙂