Поиск усредненного максимума и минимума сигнала№ 1
Автор: Большой Грызь
Дата : 07-05-02, Втр, 17:46:27

Вполне реальная математическая задача в программировании, которую в данный момент надо решить. И мне показалось, чо она может быть интересна не только мне

Имеется некоторый записанный сигнал - квадратные импульсы вот такой вот формы примерно:
_П_П_П_П_

Запись - это просто массив с числами - значениями сэмплингов с некоторой частотой.
Требуется найти устредненный максимум и минимум сигнала за как можно меньшее время (чтобы в реальном времени во время записи самого сигнала определять успевало).
Проблема - именно в усреднении. Просто пробежаться и найти максимум и минимум - не хохма. Но тогда такой алгоритм выловит все спайки случайные - а это никому не нужно.
За две пробежки найти максимум и минимум усредненный тоже легко - сначала делается первая пробежка и определяется абсолютный максимум и минимум вместе со спайками. Затем пробегаются по массиву еще раз и делают усреднение на всё что выше или ниже половины между абсолютным максимумом и минимумом - это и будут усредненные их значения.
Но это за две пробежки. А за одну как? Тем более, что заранее амплитуда сигнала неизвестна - т.е. невозможно заранее взять эту половину.
-----------------------------
Quod erat demonstrandum!
Профиль 

Поиск усредненного максимума и минимума сигнала№ 2
Автор: Андрей
Дата : 08-05-02, Срд, 08:57:45

עבוד אותות, однако. Обратись к кому-нить с хашмаля или мехонот, там эти дела учат.
Профиль 

Поиск усредненного максимума и минимума сигнала№ 3
Автор: Паша
Дата : 12-05-02, Вск, 12:00:42

Самое простое, что приходит в голову, это динамически вычислять среднее между абсолютным "макс" и "мин", всё что больше прибавлять к среднему "макс", всё что меньше к среднему "мин". Если массив большой, то точность будет высока. Можно ещё откинуть значения некоторого количества первых проб...
Профиль 

Поиск усредненного максимума и минимума сигнала№ 4
Автор: Паша
Дата : 13-05-02, Пнд, 02:30:57

А ещё можно откинуть все предыдущие, если динамически среднее вылезет за рамки между абсолютным динамическим "мин" и "макс"...
Профиль 

Поиск усредненного максимума и минимума сигнала№ 5
Автор: Большой Грызь
Дата : 13-05-02, Пнд, 06:03:51

Вобщем пока что лучше решения не нашел, чем отловить первый пульс и определить по нему примерный абсолютный максимум и минимум, а затем по всем остальным пульсам в буффере уже считать усредненное значение (кол-во пульсов в буффере - 9-10, так что плюс-минус первый пульс никак не повлияет на точность усреднения).
Это решение в лоб. То есть те же две пробежки, только не в параллель по всему буфферу, а последовательно по двум частям буффера.
Я просто думал, что каким-то образом можно решить это дело за одну проходку математически.
-----------------------------
Quod erat demonstrandum!
Профиль 

Поиск усредненного максимума и минимума сигнала№ 6
Автор: Паша
Дата : 13-05-02, Пнд, 13:19:01

Грызь, если в моём решении в момент, когда динамически среднее вылезает за рамки между абсолютным динамическим "мин" и "макс", ничего не отбрасывать, а бывшие среднии усреднять и учитывать дальше только в одну сторону, то получишь точно такой же результат за один пробег, как и в твоём изначальном решении за два.
Если я правильно понял условие задачи, то моё решение делает свою работу за один пробег.
Если хочешь позвони я уточню, что я имел в виду. Телефон можно выяснить по мылу...
Хотя может быть я и не понял условия, так как я далёк от программирования...
Профиль 

Поиск усредненного максимума и минимума сигнала№ 7
Автор: Большой Грызь
Дата : 14-05-02, Втр, 05:41:29

Паша, первый пульс - все равно пропустишь или надо вставлять условие еще одно (хотя пробежка будет одна). То есть вот, что я имею в виду - "внутри" каждого пульса ты имеешь почти "прямую" линию. Ключевых слов два: "почти" и "прямую". Иимеется в виду, что вот ты начал сканирование буффера и видишь, что значения первых, скажем, 100 элементов "почти" одинаковы - но ты-то не знаешь "максимум" это или "минимум". Это может быть, как "верхняя" планка, так и "нижняя". И до того момента, пока ты не добежишь до "перепада" - ты этого не узнаешь.
Но допустим, что изначально ты будешь сохранять среднее значение в какой-то временной переменной и добежав до резкого перепада уже решишь, что ты считал - максимум или минимум, а дальше, узнав это, продолжишь уже считать усреднение обычным путем.
Это возможно, но имеется одно большое НО: обнаружить "резкий" перепад не очень-то просто, так как неизвестно, что же считать резким перепадом. Постараюсь буквенно "нарисовать" пример сигнала (картинкой было бы проще, но еще не успел эту опцию сделать )
         
|\   |                   /\
||___|_|__            __| |___          __
АВ   С    |          |       |       |
            |___ ___ _|       |___   __|
                \/   |             \_|


То есть вот тебе, пожалуйста - сигнал, начавшийся с "верхней планки" (от точки А), у которого почти сразу - перепад после всплеска (после точки В). И весь кусок ВС уже будет воспринят, как "нижняя планка" и соответственно будет добавлен к усреднению минимума.
Вобщем-то на приведенном сигнале (который, в принципе, приближен к реальному) и невозможно даже примерно сказать, где есть "абсолютный максимум", а где - "абсолютный минимум", пока не пробежишься хотя бы по 1/10 буффера (заранее известно, что в буффере есть 9-10 импульсов).
-----------------------------
Quod erat demonstrandum!
Профиль 

Поиск усредненного максимума и минимума сигнала№ 8
Автор: Паша
Дата : 14-05-02, Втр, 12:16:13

Грызь в своём втором сообщении я чётко определил определение "резкого перепада", а в третьем, как избежать потери значений первого сигнала. Единственное условие, для того чтобы мой метод дал 100% результат, звучит так: все верхние и нижние значения должны лежать по разную сторону от среднего любой пары верхняя-нижняя точка. Что легко соблюдается, если "резкий перепад", действительно резкий.
Профиль 

Поиск усредненного максимума и минимума сигнала№ 9
Автор: Большой Грызь
Дата : 14-05-02, Втр, 12:59:21

Верно... надо подумать....
-----------------------------
Quod erat demonstrandum!
Профиль 


Вы не зарегистрированы либо не вошли в портал!!!
Регистрация или вход в портал - в главном меню.



 Просмотров:   004881    Постингов:   000009