Группировка измерений по интервалу между ними

#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 (дискретный ..) есть много ресурсов на выбор.

Надеюсь, это поможет кому-нибудь однажды! 🙂