|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.10.2013, 16:34 | #11 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 20
|
На самом деле мне все это нужно для анализа тренировочного процесса в пост обработке т.е. у меня имеются данные с тренировки, которая проходила как максимум 3 часа, тренер заходит в программу выбирает данные, и с помощью CheckListBox выбирает нужный ему измеренный параметр. Например скорость, углы вращения, дистанцию, ускорения и т.п. Частота датчика 100 Гц. Данных куча. Для отображения графика всей тренировки в общем виде достаточно и шага 1 точка в секунду. Но когда происходит событие на Tchart OnZoom и выбирается интервал от 2 минут и меньше, нужно выводить все точки, иначе будет прямая линия. Если есть какие то наработки по построению графиков, огромная просьба показать или подтолкнуть на рациональный путь...Неужели если рисовать на Canvas и реализовывать функцию Zoom самому, анализ будет быстрее?
|
05.10.2013, 17:05 | #12 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...вы не читаете, что вам пишут. Проводите децимацию при отображении точек на определенном временном интервале, нет смысла хранить 1000 точек в одном экранном пикселе, если так до вас быстрее дойдет. И ни в коем разе не храните все данные в чарте.
Для того, чтобы поняли, даже в SCADA архивные тренды не выводят все точки, а подгружают для визуализации только определенный заданный участок, а архивы там до нескольких лет доходят с шагом в десятки миллисекунд.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
05.10.2013, 17:34 | #13 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 20
|
Я это понимаю, уважаемый Raxp, только как провести децимацию при отображении точек? Я так понимаю нужно в потоке анализировать границы выделенной области, и если мы анализируем короткий участок, на котором нам нужны подробности, мы выключаем децимацию , варианты как это осуществить
1) удаляем все усредненные прореженные точки из Series или просто очищаем Series и добавляем туда все имеющиеся данные 2) Добавляем на этом участке недостающие точки (но при движении графика при зажатой правой кнопке мыши, очень сильно тормозит эта функция) 3) Создаем для 1 параметра 3 (или более) Series с разной частотой вывода точек (Но очень загрузится буфер Chart - а ) Очень интересен механизм реализации предложенной децимации. Извиняюсь, если я чего то не до понимаю. |
05.10.2013, 18:08 | #14 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
1- высчитываем сколько экранных пикселей вмещается по горизонтали на участке визуализации (области отображения тренда)
2- проходимся по массиву данных и делаем выборку из заданного временного участка для отображения. Тупой подход: экранных точек 1000, данных 10000, тогда следует выбрать каждую 10000/1000=10 точку, однако это приведет к искажению формы из-за возможных пропусков экстремумов в сигнале. Умный подход: делаем выборку на заданном временном интервале только экстремумы - характерные перегибы, применяем дополнительно полином сглаживания при окончательном выводе в серию чарта. 3- при событиях ZOOM/UNZOOM узнаем какой временной участок хочет пользователь увидеть и повторяем с пункта 1. Ферштеен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
05.10.2013, 18:30 | #15 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 20
|
Огромное спасибо за умное решение Raxp. Только маленькое уточнение, после выполнение пунктов 1 и 2 мы очищаем старые данные в Series (Chart1.SeriesList[i].Clear) и на выбранном интервале выводим в эту же серию новые (уточненные) данные или же добавляем в имеющуюся недостающие точки? Как лучше сделать?
Все это будет происходить при событиях OnZoom или UndoZoom. |
05.10.2013, 19:29 | #16 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Не обязательно. Если экранные размеры окна отображения не изменились (пользователь не разворачивал форму тренда, не изменял его размер), то отображать все равно придется тоже самое количество точек, при этом очищать серию-контейнер не нужно, ведь мы имеем доступ к каждой точке через series.yValue[i] и series.хValue[i]. Этим мы дополнительно экономим время.
Нужно всего лишь подставить другие значения в соответствующие индексы массива (контейнера серии) из пункта 2.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
05.10.2013, 22:06 | #17 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 20
|
Огромное Вам спасибо Raxp. Попробую реализовать данную идею, о результате обязательно сообщу.
|
05.10.2013, 22:20 | #18 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Наверняка в базе данные хранятся. Почему BDChart не использовать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.10.2013, 23:02 | #19 |
Пользователь
Регистрация: 21.11.2010
Сообщений: 20
|
Не совсем Аватар. Все хранится в типизированных файлах, поэтому проще использовать Chart.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определение скорости по видеосигналу | N0Faceg | Помощь студентам | 7 | 24.04.2013 14:16 |
WiFi увеличение скорости | misher | Компьютерное железо | 2 | 09.05.2011 23:38 |
Индексирование таблиц и увеличение скорости работы | CodeNOT | PHP | 3 | 29.04.2011 11:57 |
С++ под Linux увеличение скорости работы с болванкой | Yulka | Помощь студентам | 0 | 16.12.2009 21:42 |
Уменьшение загрузки ЦП и увеличение скорости программы. | Shadow_1329 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 80 | 18.08.2009 15:22 |