|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
Сглаживание сигнала31.07.2012, 12:13. Показов 7282. Ответов 14
Метки нет (Все метки)
Приветствую Вас!
Возник следующий вопрос: даны показатели датчика, приходят они в виде ступенек. Необходимо "сгладить" или "отфильтровать" сигнал, чтобы избавиться от этих ступенек. Другими словами, чтобы полученная функция проходила по "вершинам" ступенек. Считал,что неплохой вариант - это экстраполяция, но, толи я не до конца разобрался как правильно ее применить, толи она сюда не подходит. В существующих программах "гладил" функцию методом Савицкого-Голея, и FFT фильтром и т. д. Но тут уже проблема в моих знаниях, не хватает мне мозгов самостоятельно разобраться в тонкостях их работы, для создания своего модуля на основе этих способов сглаживания. Хочу добавить, что новые данные приходят каждые 0.03 сек Еще одно условие - это избегать запаздывания. Было бы отлично получить еще и математическое обоснования предложенных способов т е формулы, что откуда вытекает и какие обозначения как расшифровываются. Помогите кто чем и как может!
0
|
|
| 31.07.2012, 12:13 | |
|
Ответы с готовыми решениями:
14
Сглаживание Сглаживание матрицы Сглаживание матрицы |
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|
| 31.07.2012, 12:22 | |
|
Я поднимал не так давно эту тему.
Гляньте, может поможет. Правда особой математической трактовки там нет. Но тем не менее работает. И не плохо.
1
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 31.07.2012, 12:31 [ТС] | |
|
Большое спасибо,я обязательно попробую разобраться с этим алгоритмом,тем более,что у меня были уже такие потуги
Тут возникают 2 проблемы: 1: я настолько начинающий программист,что не могу подключить данный исходник к своему модулю. 2: насколько мне показали мои эксперименты,метод савицкого-голея запаздывает.
0
|
|
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|||
| 31.07.2012, 12:36 | |||
|
Попробуйте немного упростить алгоритм если у Вас таки будет тормозить. Что интересно, алгоритм работал действительно хорошо (давал хороший результат) именно с этими коэффициентами. Убил около суток для поиска более подходящих -=) Не нашел.
0
|
|||
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
||
| 31.07.2012, 13:00 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 31.07.2012, 13:39 [ТС] | |
|
to HomeR_J_SimpsoN, вот про Qt и библы и каким образом переписать это все в тот вид,который мне нужен, я вообще ничего не знаю
![]() А как же быть? to mimicria, это я понимаю, суть в том, что я считал, что экстраполяция поможет избежать большого запаздывания, потому как достаточно небольшого массива полученных данных. Повторюсь,что данные приходят каждые 0.03 сек и запаздывание самого прибора равно 0.5 сек(из-за его конструктивных особенностей). привожу картинки с участками функции, замечу что это всего-лишь небольшая ее часть,чтобы показать характер ступеней. Она не постоянно возрастает, а имеет и прямые участки и спады. на картинках исходная функция и желаемый результат.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 31.07.2012, 13:45 | |
|
Ну вот вам надо сдетектировать эти ступени.
1. Небольшое сглаживание чем-угодно, чтобы уменьшить шумы. 2. Смотрим на производную. Где у неё резкий дёрг вверх и тут же спад — там угол ступеньки. 3. Находим все углы, строим интерполяцию по этим точкам.
0
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 31.07.2012, 14:03 [ТС] | |
|
~OhMyGodSoLong~, Если следовать Вашему методу,то получается сильное запаздывание,а этого надо избегать. Сигнал не приодит уже готовый,а формируется в процессе работы прибора, другими словами,работает в режиме реального времени и в этом вот режиме и нужно "отсекать" все лишнее.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 31.07.2012, 15:03 | |
|
Ну сглаживать можно на лету. Производную вычислять тоже можно на лету. Прилеплять новые сплайны (и, возможно, чуть править предыдущие) по новым приходящим точкам тоже можно на лету.
0
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 31.07.2012, 15:11 [ТС] | |
|
Не затруднит ли Вас подкинуть метод для обработки,у меня собственно с этим проблема. Ну а за исходничек с комментариями, я был бы очень,ну прям ооочень признателен
0
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 31.07.2012, 21:52 [ТС] | |
|
novi4ok, Дело в том, что по полученным данным должен формироваться как раз управляющий сигнал, но так как данные приходят "скачками" или "ступеньками", то не всегда можно сказать, действительно ли была ступенька(т е показатель не менялся) или это своего рода "шум". Ну и график это, вобщем говоря, критерий оценки работы прибора, тоже немало важен.
0
|
|
|
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 8
|
|
| 02.08.2012, 10:26 [ТС] | |
|
Товарищи, и все-таки прошу о помощи!
Если у кого-то есть возможность "поднатаскать" меня в программировании на С++ на решении конкретной задачи,посредством репетиторства, отзовитесь пожалуйста(естественно не безвозмездно). Лучше бы из Москвы или ближайшего Подмосковья, так как сам я из города Жуковский. Кто что посоветует или сам готов взяться - пишите или тут в лс или на почту ivannekrasov88@mail.ru
0
|
|
| 02.08.2012, 18:59 | ||
|
допустим, мы имеем уже три ступеньки позади, и находимся в конце четверной (правая точка на горизонтали). т.е. "текущие координаты сигнала" - х 40, у 30. ты, с одной стороны, хочешь, чтобы "не было запаздывания", т.е. нужно за текущее значение сигнала (ордината у) принимать 30. с другой стороны, ты хочешь "сглаживания", т.е. нам для этого должно быть все равно, какое значение имеет сигнал в настоящий момент, важно, как он менялся несколько ступенек назад. нужно определиться, что в данный момент хуже - рассчитать управляющий сигнал, приняв текущее значение за 30 или 40? а если следующая ступенька будет прыгать не на 40, а вниз, на 20 - это сильно плохо или потерпит? нужно знать ответы на все эти вопросы, т.е. насколько инерционен твой объект, какова его реакция на управляющее воздействие, насколько критичны отклонения и т.д., а до того - голая спекуляция, и никакие методы и репетиторство не помогут.
0
|
||
| 02.08.2012, 18:59 | |
|
Помогаю со студенческими работами здесь
15
Выполнить сглаживание одномерного массива
Как исправить программу (сглаживание функции)
Добавить сглаживание перехода сигнала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|