2014 dxdy logo

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

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


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


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



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


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

есть данные, которые на лету оцифровываются на 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
232
Что нам теория говорит? Корреляционная обработка с многоканальностью по неизвестному параметру сигнала, т.е. банк согласованных фильтров с многоканальностью по частоте! Можно рассмотреть вариант квазиоптимальной обработки: когерентное накопление в рамках прямоугольного окна заданной длительности (можете посчитать, каковы в этом случае будут потери в отношении "С/Ш").

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


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

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


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

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


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

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


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

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

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

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


23/02/23
191
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 ] 

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



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

Сейчас этот форум просматривают: Xo4y3HaTb


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

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