2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 19:26 


23/02/23
184
Добрый день,

есть данные, которые на лету оцифровываются на 1MS/s, в них присутствует полезный сигнал - это какие-то всплески. Эти всплески по форме похожи на пол-периода синуса, иногда они могут идти последовательно друг за другом с разным знаком, то есть получается несколько полупериодов синуса.

Про частоту таких полусинусов почти известна частота, то есть:

* частота расположена в диапазоне от 30кГц до 150кГц,

* заранее известно 5 частот, более менее равномерно разбросанных по этому диапазону, и частота таких полусинусов довольно близка к ним, но, может отличаться иногда на процентов десять, то есть в худшем случае получается почти не известно: например даны частоты 30, 45, 67, 100, 150, а из-за того, что одна частота ушла вниз на 15% а другая вверх на те же 15% они оказались очень близко друг к другу.

Шума много, причем по евклидовой норме он превышает полезный сигнал на пару-тройку порядков. Он может быть немного выше верхнего диапазона частот, то есть выше 150кГц, и его очень много ниже 30кГц.

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

Но если на исходный график посмотреть - сигнал виден не вооруженным глазом.

Мне надо детектировать частоту сигнала, точное положение максимума, и, если сигнал состоит из нескольких полупериодов, то мне надо уточнить частоту + точно получить, что тут есть столько-то полупериодов и записать хотя бы какую-то аппроксимацию огибающей.

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

Так как из-за огромной величины шума в других диапазонах отфильтровать только этот диапазон без эффекта альясинга не получается - ведь то, что мне надо - иногда длится всего-то 6-10 отсчетов.

Недавно я поднимал тему оконного Фурье ( topic160206.html ) которое я применял к этой же задаче. Если сигнал на мое счастье длился внутри одного окна, или был достаточно длинным и распространялся на несколько окон - все сохранялось идеально, а вот если мне сильно не везло и сигнал был коротким (пол-периода) и был точно на границе двух окон, я часто терял информацию о таком сигнале. Я тендирую к оконному Фурье с перекрыванием, но информации после такой компрессии будет больше и я не впишусь по скорости передачи.

Мой вопрос в том какой метод применить для того, чтобы или перекомпремировать такой сигнал, чтобы он все-таки стал занимать существенно меньше трафика, или сразу детектировать такую информацию в этом сигнале, но с небольшими математическими затратами (на процессоре есть от силы 10-12 флоп на один принятый сигнал).

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 20:07 


14/11/21
231
Что нам теория говорит? Корреляционная обработка с многоканальностью по неизвестному параметру сигнала, т.е. банк согласованных фильтров с многоканальностью по частоте! Можно рассмотреть вариант квазиоптимальной обработки: когерентное накопление в рамках прямоугольного окна заданной длительности (можете посчитать, каковы в этом случае будут потери в отношении "С/Ш").

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 20:19 
Заслуженный участник
Аватара пользователя


11/03/08
10220
Москва
То есть в худшем случае имеется 3 отсчёта на всплеск?

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 20:46 


14/11/21
231
Да и еще... Вы в таком виде даете информацию, что все время ощущается некая недосказанность. Например, не ясно, какая это передача, синхронная, асинхронная, сохраняется ли синхронность хотя бы в рамках одной посылки итд... Правила передачи не ясны!

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 20:52 
Заслуженный участник
Аватара пользователя


11/03/08
10220
Москва
Как вариант - фильтровать посредством Фурье ("свёртка с наложением" или "...с перекрытием"), описание есть у Оппенгеймера и Шафера, например, выделив диапазоны известных частот.

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение26.04.2025, 21:02 


14/11/21
231
Если, например, предполагается, что в рамках всего сеанса сигнал имеет вот такую структуру:
$\sum\limits_{i}^{}d_i\; p(t-t_d-T i)$
где $t_d$ - временная задержка является медленно меняющимся параметром, $T$ - заранее неизвестен, но в рамках всего сеанса постоянен.

...то в таком случае эта одна ситуация и тут возможны хорошие и весьма экономные решения.

А если имеет место какой-то сплошной хаос, то это другая ситуация. Мне, например, до сих пор не ясно, в какой степени ситуация хаотична.

 Профиль  
                  
 
 Re: Чем детектировать полусинусы в прсутствии сильного шума?
Сообщение27.04.2025, 10:50 


23/02/23
184
Alex Krylov в сообщении #1683848 писал(а):
Что нам теория говорит? Корреляционная обработка с многоканальностью по неизвестному параметру сигнала, т.е. банк согласованных фильтров с многоканальностью по частоте! Можно рассмотреть вариант квазиоптимальной обработки: когерентное накопление в рамках прямоугольного окна заданной длительности (можете посчитать, каковы в этом случае будут потери в отношении "С/Ш").


спасибо! Так правильно, я же примерно сейчас такое пробовал, и это действительно работает, но, к сожалению, очень много вычислительных ресурсов требует и это хотелось улучшить.

-- 27.04.2025, 10:52 --

Евгений Машеров в сообщении #1683850 писал(а):
То есть в худшем случае имеется 3 отсчёта на всплеск?

да, верно, такое тоже бывает, именно шапочками (0.5, 1, 0.5) я такое коррелирую.

-- 27.04.2025, 10:58 --

Alex Krylov в сообщении #1683853 писал(а):
Да и еще... Вы в таком виде даете информацию, что все время ощущается некая недосказанность. Например, не ясно, какая это передача, синхронная, асинхронная, сохраняется ли синхронность хотя бы в рамках одной посылки итд... Правила передачи не ясны!

данные появляются на микроконтроллере и сохраняются по DMA. То есть оцифровывается комплект с примерно 100 отсчетов, далее с ним можно что-то делать, и запустить передачу результата на центральный процессор, пока оцифовывается следующий комплект. На контроллере есть немного свободной памяти, примерно 2 килослова, включая память на сбор и посылку данных по DMA. Оцифровка идет на скорости 1MS/s на 12 битах, наружу канал может 4МБита/с но это его предельная скорость, желательно иметь скорость примерно 3МБит/с, может 3.5МБита/с.

-- 27.04.2025, 11:03 --

Alex Krylov в сообщении #1683856 писал(а):
А если имеет место какой-то сплошной хаос, то это другая ситуация. Мне, например, до сих пор не ясно, в какой степени ситуация хаотична.

всреднем, если обработать и сохранить в формате {положение пика, амплитуда, число полупериодов, номер частоты и отклонение от самой частоты} и эту информацию разумно запаковать в битовые поля, то средняя информативность сигнала становится около 1МБит/с, но реально имеет место хаос, то есть у меня есть окна по десятку миллисекунд, когда сигнала нет вообще, а иногда сигнал просто друг на друге и у меня нет заранее информации об этом.

-- 27.04.2025, 11:06 --

Евгений Машеров в сообщении #1683854 писал(а):
Как вариант - фильтровать посредством Фурье ("свёртка с наложением" или "...с перекрытием"), описание есть у Оппенгеймера и Шафера, например, выделив диапазоны известных частот.


так верно, я тоже так хотел, только вот если окна без наложения - я еле-еле прохожу по трафику, но тогда теряю информацию если есть всплеск на границах двух окон, а если с наложением - то по трафику не пролезаю. Если делать большие окна и сильно отбравывать по порогу, то возникают артифакты до или после сигнала, то есть вместо одного полупериода у меня до и после получается еще по несколько затухающих полупериодов.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group