|
|
  |
Фильтрация входного сигнала. |
|
|
|
Jan 30 2014, 19:23
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (TSerg @ Jan 30 2014, 22:17)  Это разве задача?  Интереснее на ней рассмотреть предельные возможности разных методов. Оказалась ещё и какая  Я удалённо силой мысли внутрь полупроводника проник - см. мой модифицированный предыдущий msg.  QUOTE (thermit @ Jan 30 2014, 22:19)  Вы придумали собственную задачу и бодро взялись ее решать (не решив, кстати говоря). Между тем с вопросом тс можно ознакомиться в 1 посте. "Да чихал я на Лохматого" - х/ф "Акваланги на дне"
Сообщение отредактировал AndrewN - Jan 30 2014, 19:38
|
|
|
|
|
Jan 30 2014, 19:48
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (ViKo @ Jan 30 2014, 23:38)  Подогреть пациента, охладить. Потому что оно не нормальное (ненормальное!).  Я практически уверен, что АЦП битое. Поэтому и распределение шума асимметричное и с дырками. Дырки мне удалось (случайно) убрать, а уж асимметрию теплового шума - чего только битый АЦП не придумает...
|
|
|
|
|
Jan 31 2014, 07:27
|
Группа: Участник
Сообщений: 12
Регистрация: 8-01-13
Пользователь №: 75 101

|
Всех ответивших благодарю за помощь. Вообщем, это не АЦП, потому сеанс телепатии был не совсем удачен. Физически, эти значения представляют собой тики таймера в системе радиочастотной ToF. Т.е. мы измеряем расстояние между цифровыми трансиверами с помощью вычисления времени полета радиоволны. Сам процесс измерения производится следующим образом: Первое устройство (мастер) запускает счет таймера и отправляет ведомому пакет, в момент завершения отправки происходит событие захвата и защелкивается значение счетного регистра таймера, мастер переключается в режим приема. Далее, ведомое устройство, принимает пакет, переключается в режим передачи, и начинает отправку ответного пакета. Когда мастер ловит событие детектирования синхрослова, то это событие на другом канале захвата таймера вызывает защелкивание второго значения таймера (переполнения учитываются). После этого, получаем разницу между двумя событиями в тиках таймера. Вот именно эти значения и даются в первом посте. Все задержки, константные, кроме одной - задержки между началом передачи и моментом возникновения события детектирования синхрослова. Подозреваю, что природа этого связана с частотой дискретизации входного сигнала в трансивере. Другими словами, насколько точно трансивер определяет фронты сигнала - насколько точный результат я и получаю на выходе. И "ненормальность" распределения, мне кажется, связана именно с этим. Во всяком случае, другого объяснения для того факта, что измерения стремятся занимать несколько определенных дискретных значений, я пока не придумал  Сама проблема заключается не в том, что нужно получать большую скорость измерений, а в том, что устройства автономные и тратить энергию на слишком длинные сеансы связи - роскошь. Так, на данном этапе, для того, чтобы провести 100 циклов измерения я сейчас затрачиваю 85 мс, но усреднение 100 значений дает разброс больше желаемого. Приемлемую болтанку дает усреднение 1000 значений, но тогда и время измерения почти секунда. Так что при этом сеансы измерения расстояния прийдется проводить значительно реже, что, собственно и смущает. Пытался вычислить для выборки максимумы и минимумы (все, если их несколько) и выбросить из усреднения, но это не дало результата. Видимо действительно нужно как-то задавать окно и за его пределами отсекать "левые" значения. Но пока не придумал по каким критериям задавать границы этого окна, имея просто выборку, например из сотни значений.
|
|
|
|
Guest_TSerg_*
|
Jan 31 2014, 10:31
|
Guests

|
Понимание подходов для обработки могут дать стат. исследования потоков, по примеру Вами приведенному в первом посте. Если действительно имеет место более-менее стационарная кластеризация сигнала по уровням, то необходимо определить параметры такой кластеризации и обрабатывать сигнал в онлайн на основе полученных знаний. P.S. Если захотите - можете скинуть сюда или в личку некий набор подобных измерений для анализа.
|
|
|
|
|
Jan 31 2014, 10:40
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (Xtal1 @ Jan 31 2014, 10:27)  Во всяком случае, другого объяснения для того факта, что измерения стремятся занимать несколько определенных дискретных значений, я пока не придумал Да. Пара банальностей: всякое измерение это случайный процесс, в большинстве случаев с гауссовым распределением. Из измеренных данных видно тримодальное распределение, причём оно проявляется уже на первом десятке измерений, и дальше статистика не меняется, что для 50, для 100, для 1000 всё едино. Значит должно быть хорошее, разумное объяснение для дырок в распределении. Эти дырки случайными не выглядят, а имеют систематический характер. Что это? Моя гипотеза - сбой (ошибка в работе) в измерительной системе.
|
|
|
|
|
Jan 31 2014, 11:02
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
если не секрет, то интересуют грязные подробности  что за трансиверы, параметры передачи (битовая скорость) и в каких тугриках измеряется время в прикреплённом файле. распеределние вполне нормальное, надо только округлить до значения (загрубить дисктеризацию до ~40 тугриков). 33590, 36630, 36670. потому что это и есть реальная дисктерность ограниченная в приёмнике, остальные более мелкие изменения полезной информации не несут.
можно попробовать улучшить ситуацию если аккуратно смотреть частоту тактирования обоих трансиверов. так как частоты заведомо не одинаковые можно попробовать поймать их биения, чья фаза возможно даст дополнителную информацию о задержке распространения. но так как шумы (16 тугриков) не особо меньше дискретности (40 тугриков) то, пожалуй, ничего хорошего из этого не получится. так что природу тут не обманешь, есть распределение с сигмой 16 тугриков, хочется сделать 1, усредняй 16^2 = 256 раз.
|
|
|
|
Guest_TSerg_*
|
Jan 31 2014, 12:47
|
Guests

|
Это нормальный подход, если говорить о традиционной фильтрации. Если сигнал+помеха можно устойчиво кластеризовать, то появляется возможность выборки наиболее привлекательного кластера значений и далее обрабатываеть его относительно традиционными средствами. Добавив динамическую кластеризацию получаем довольно робастный алгоритм.
|
|
|
|
Guest_TSerg_*
|
Jan 31 2014, 21:21
|
Guests

|
Что интересно, в итоге - спасибо ТС за подачу почти забытой мной идеи. Набросал сегодня алгоритм динамической кластеризации в онлайн решении и на его основе - разбраковку помех по кластерам. После вычленения остатка - считаем его сигналом (линейная обработка в частотной области) или делаем стат. оценку.
|
|
|
|
|
Jan 31 2014, 22:11
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(Xtal1 @ Jan 30 2014, 17:18)  Можно ли добиться подобного результата с помощью каких-то более серьезных алгоритмов фильтрации и получить при этом время отклика фильтра хотя бы 200-400 сэмплов. Можно. Только поясните, пожалуйста, зачем это Вам нужно? Ну, какие характеристики сигнала являются существенными, и Вы хотели бы их выделить? Цитата(Xtal1 @ Jan 31 2014, 11:27)  Вот именно эти значения и даются в первом посте. Ага, теперь немного понятнее. Скажите, есть ли какие-нибудь гипотезы относительно динамики взаимного передвижения объектов в системе? Цитата(Xtal1 @ Jan 31 2014, 11:27)  ...Сама проблема заключается не в том, что нужно получать большую скорость измерений, а в том, что устройства автономные и тратить энергию на слишком длинные сеансы связи - роскошь. Я бы посоветовал чистить такие сигналы чем-нибудь вроде сплайн-сглаживания. Результат хороший, но вычислительная нагрузка может оказаться неприемлемой. Ещё, как вариант для длинных последовательностей - БИХ-фильтр НЧ в арифметике повышенной разрядности. Он чрезвычайно экономичен вычислительно, однако даёт непостоянство ГВЗ по частоте. Скажите, задержка получения результата фильтрации имеет значение? Цитата(TSerg @ Jan 30 2014, 20:07)  Гистограмма исходного сигнала за вычетом среднего с учетом помех: Цитата(AndrewN @ Jan 31 2014, 14:40)  Моя гипотеза - сбой (ошибка в работе) в измерительной системе. Да... Похоже, Автору темы предстоит-таки серьёзно поработать с измерителем. Для получения вменяемых первичных данных. Что-то там явно не так. Не может внешняя помеха иметь такую дикую статистику. Цитата(_pv @ Jan 31 2014, 15:02)  распеределние вполне нормальное, надо только округлить до значения (загрубить дисктеризацию до ~40 тугриков). 33590, 36630, 36670. потому что это и есть реальная дисктерность ограниченная в приёмнике, остальные более мелкие изменения полезной информации не несут. Вот это действительно похоже на правду. Если загрубить, всё получается. А чем Вы можете объяснить такую дискретность?
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Feb 1 2014, 07:21
|
Группа: Участник
Сообщений: 12
Регистрация: 8-01-13
Пользователь №: 75 101

|
Цитата(_pv @ Jan 31 2014, 13:02)  если не секрет, то интересуют грязные подробности  что за трансиверы, параметры передачи (битовая скорость) и в каких тугриках измеряется время в прикреплённом файле. Трансиверы ST-шные SPIRIT1. Параметры передачи на данный момент следующие: FSK, 250 kbps, Δf = 127 kHz, полоса пропускания 540 kHz. Контроллер используется STM32f401, тактирование таймера 84 MHz. Соответственно те тугрики, которые тики таймера, которые в прицепленном файле, это время выраженное в 1/84е6 секунд или 11,905 наносекунд на каждый тугрик. Цитата(Stanislav @ Feb 1 2014, 00:11)  Скажите, есть ли какие-нибудь гипотезы относительно динамики взаимного передвижения объектов в системе? Наверное, я не совсем понял вопрос, но тот сигнал, который я приводил, получен при неизменном взаимном расположении трансиверов (на расстоянии около 2-х метров) и предметов вокруг них (за исключением меня, сидящего рядом на стуле). Цитата(Stanislav @ Feb 1 2014, 00:11)  Скажите, задержка получения результата фильтрации имеет значение? Большого значения не имеет, если она, конечно, в разумных пределах. А какая задержка имеется ввиду, время расчета?
|
|
|
|
|
Feb 1 2014, 08:02
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Xtal1 @ Feb 1 2014, 10:21)  Контроллер используется STM32f401, тактирование таймера 84 MHz. Соответственно те тугрики, которые тики таймера, которые в прицепленном файле, это время выраженное в 1/84е6 секунд или 11,905 наносекунд на каждый тугрик. Наверное, я не совсем понял вопрос, но тот сигнал, который я приводил, получен при неизменном взаимном расположении трансиверов (на расстоянии около 2-х метров) и предметов вокруг них (за исключением меня, сидящего рядом на стуле). Умножаем 11,905 ns на 36600, получаем 0,44 ms. Умножаем на скорость света 300 000 000, получаем 130 714 m. Что-то не сильно похоже на 2 x 2 m.  Значит, есть (ее не может не быть) громадная задержка обработки сигналов в микроконтроллерах. А из-за разных прерываний и т.п. она еще и не постоянная. Вот и побочные всплески. Цитата(sup-sup @ Feb 1 2014, 01:26)  Можно и так: Ух ты, в экселе (точнее, у меня LibreOffice Calc) можно и графики рисовать! P.S. Что делают микроконтроллеры 36000 тактов?
|
|
|
|
|
Feb 1 2014, 08:40
|
Группа: Участник
Сообщений: 12
Регистрация: 8-01-13
Пользователь №: 75 101

|
Цитата(ViKo @ Feb 1 2014, 10:02)  Умножаем 11,905 ns на 36600, получаем 0,44 ms. Умножаем на скорость света 300 000 000, получаем 130 714 m. Что-то не сильно похоже на 2 x 2 m.  Значит, есть (ее не может не быть) громадная задержка обработки сигналов в микроконтроллерах. А из-за разных прерываний и т.п. она еще и не постоянная. Вот и побочные всплески. Ух ты, в экселе (точнее, у меня LibreOffice Calc) можно и графики рисовать! P.S. Что делают микроконтроллеры 36000 тактов?  Как я уже говорил выше, задержка естественно есть. Она состоит из задержек на переключение режимов приема/передачи, самого времени передачи пакета... Время входа в прерывания стабильно одинаковое (это тоже отлаживалось и проверялось), каких-то более приоритетных да и вообще других включенных прерываний нет. И еще раз повторюсь, все задержки константные (во всяком случае насколько я смог их измерить с точностью до 41,6 нс). Нестабильны задержки от начала отправки пакета передатчиком и до момента выдачи сигнала детектирования синхрослова приемником.Они одинаково пляшут при передаче в обе стороны. И порядок гуляния этих задержек как раз укладывается в гуляния самого результата измерения. Вы хотите сказать, что моя гипотеза о периоде дискретизации входного сигнала в трансивере, которым он квантует результирующие значения не верна? Цитата(_pv @ Feb 1 2014, 10:05)  раз тактовая частота 84МГц, или 12нс, то соответственно внутри приёмника сигнал оцифровывается на частоте 84/40 ~ 2МГц, что для полосы ~500 кГц, вполне разумно, зачем оцифровывать быстрее? соответственно уже снаружи столь высокочастотным таймером измерять это дело абсолютно бестолку. единственное как я уже говорил можно попробовать поймать биения этих 2МГц частот у приёмника и передатчика. тогда может и получится померить расстояние получше А эти 40, это вы взяли скачки результатов из выборки? То-есть Вы тоже считаете, что малину портит именно частота дискретизации самого трансивера? Еще хочется услышать Ваше мнение по поводу вот этого. Как думаете, там результат получился более красивый именно за счет несколько иного функционирования трансиверов (я имею ввиду, что у них частота дискретизации могла быть повыше)?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|