Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Фильтрация входного сигнала.
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
Xtal1
Всем доброго времени суток.
Прошу прощения, если не в тот раздел, но более подходящего не нашел.

Проблема заключается в следующем:
Есть поток входных значений, для примера даю выборку из 1000 отсчетов

Нажмите для просмотра прикрепленного файла

Нужно фильтровать такой поток значений, дабы получить "болтанку" на выходе не более 2-3 единиц по амплитуде. Тупым усреднением этого получается достичь лишь при количестве усредняемых значений близкому к 1000.
Можно ли добиться подобного результата с помощью каких-то более серьезных алгоритмов фильтрации и получить при этом время отклика фильтра хотя бы 200-400 сэмплов.
Rst7
Moderator: Есть же раздел "Алгоритмы ЦОС". Тему перенес.
TSerg
Сигнал вроде без явного тренда.
Вычисляем скользящее среднее и после первых N начинаем отсекать выбросы ( по уровню или по медиане ).
Продолжаем вычислять ск. среднее с учетом отбраковки.
Длина окна среднего может быть или постоянной или вообще нарастающей.
Это, если примитивно.
ViKo
По-моему, круче усреднения ничего быть не может. Когда каждая выборка участвует в фильтрации с максимальным весом (1).
TSerg
Это - даsm.gif
Но там есть явные выбросы, которые стоит отсекать до усреднения, т.е. сигнал остоит из некоего медленного тренда и редких импульсных помех.
Вывод чисто зрительно-телепатический.
К примеру, имп. помехи статистически смещены в положительную полуплоскость - это даст смещение полезного сигнала туда же.
ViKo
Цитата(TSerg @ Jan 30 2014, 17:03) *
Это - даsm.gif
Но там есть явные выбросы, которые стоит отсекать до усреднения, т.е. сигнал остоит из некоего медленного тренда и редких импульсных помех.
Вывод чисто зрительно-телепатический.

А-а. Я не смотрел. Тогда сначала нужно запустить медианный фильтр.
TSerg
О чем и речь была, либо отсечка по уровню каждого отсчета (если уровень имп. помех заметно отстоит от уровня сигнала), если не желательно окно для медианы.
thermit
Цитата(Xtal1 @ Jan 30 2014, 16:18) *
Всем доброго времени суток.
Прошу прощения, если не в тот раздел, но более подходящего не нашел.

Проблема заключается в следующем:
Есть поток входных значений, для примера даю выборку из 1000 отсчетов

Нажмите для просмотра прикрепленного файла

Нужно фильтровать такой поток значений, дабы получить "болтанку" на выходе не более 2-3 единиц по амплитуде. Тупым усреднением этого получается достичь лишь при количестве усредняемых значений близкому к 1000.
Можно ли добиться подобного результата с помощью каких-то более серьезных алгоритмов фильтрации и получить при этом время отклика фильтра хотя бы 200-400 сэмплов.



Мощность шума в вашем примере ~300. Вам нужна ~1. Т е фильтром вам надо ограничить полосу в 300 раз, те фильтр будет с откликом минимум 600 отсчетов.
Медианная фильтрация и др нелинейщина применима в случае сглаживания, но не в случае оценки среднего значения.
AndrewN
QUOTE (ViKo @ Jan 30 2014, 17:05) *
сначала нужно запустить медианный фильтр
Если допустимы гипотезы, то я думаю, что это дробовой шум аналого-цифрового преобразователя, при постоянном входном сигнале.

Медиана с апертурой 15 выборок уменьшает разброс до 3-4, апертура в 27 выборок - до 1.
TSerg
Частотный анализ все показывает верно - допустима отсечка по уровню.
Чистая медиана (т.е только медиана) при отсутствии импульсных помех приведет к искажениям полезного сигнала.

Гистограмма исходного сигнала за вычетом среднего с учетом помех:
Нажмите для просмотра прикрепленного файла

Отсечка помех по уровню (взят abs(20)) и центрирование остатка приводят к картине маслом:
Нажмите для просмотра прикрепленного файла

С таким сигналом легко справится скользящее среднее.
AndrewN
QUOTE (TSerg @ Jan 30 2014, 19:07) *
Чистая медиана (т.е только медиана) при отсутствии импульсных помех приведет к искажениям полезного сигнала.
Если не интерпретировать эту гистограмму как три или бимодальное распределение, то медиана даст быструю и наилучшую оценку. Для симметричных шумов медиана даёт несмещённую оценку. А помехи как раз импульсные, просто их относительно много...

(P.S. однако видно, что шум не симметричный и выборочное среднее 36636, а медиана даёт 36634. Но это мелочь, по сравнению со скоростью медианы - 15 выборок длина и шума нет sm.gif
TSerg
Это все понятно, но медиана без помех введет нелинейность в сигнал и его оценку, да и ТС сильно беспокоился по поводу 2 дискрет точности выходного сигнала.

P.S.
>однако видно, что шум не симметричный
На крайней картинке надо считать это уже не шумом, а сигналом и поэтому - медиана внесет нелинейность.

P.P.S
Для реккурентного SMA ( скользящее среднее ) вообще выборка только однаsm.gif
SMA[i] = SMA[i-1] + (X[i] - X[i-n])/n
AndrewN
QUOTE (TSerg @ Jan 30 2014, 20:51) *
ТС сильно беспокоился по поводу 2 дискрет точности выходного сигнала.
На графике измеренного сигнала видно, что максимальные отклонения равны около 40 в обе стороны, т.е. чуть больше 5 младших бит могут врать, о +/-2 голова может не болеть.

Я поменял окно медианы на 9, даже такое короткое хорошо давит эти +/-40. На мой взгляд (поскольку истинное значение нам никогда не узнать, и приходится довольствоваться оценкой) - задача решена.

P.S. А это была хорошая идея про +/-40. Предположив, что 5 и 3 биты сбоят (40 = 0х28 = 10 1000) почти всегда наоборот, я прибавлял или вычитал 40 из выпадающих значений:
CODE
        if (x[k] < 36629)
            res = x[k] + 40;
        else if (x[k] > 36640)
            res = x[k] - 40;
        else
            res = x[k];
Результат превзошёл все ожидания. Убедитесь сами. Похоже, что эти биты и в правду сбоят!
TSerg
Это разве задача? sm.gif
Интереснее на ней рассмотреть предельные возможности разных методов.
thermit
Цитата(AndrewN @ Jan 30 2014, 21:50) *
На графике измеренного сигнала видно, что максимальные отклонения равны около 40 в обе стороны, т.е. чуть больше 5 младших бит могут врать, о +/-2 голова может не болеть.

Я поменял окно медианы на 9, даже такое короткое хорошо давит эти +/-40. На мой взгляд (поскольку истинное значение нам никогда не узнать, и приходится довольствоваться оценкой) - задача решена.

- vale.


Вы придумали собственную задачу и бодро взялись ее решать (не решив, кстати говоря). Между тем с вопросом тс можно ознакомиться в 1 посте.
AndrewN
QUOTE (TSerg @ Jan 30 2014, 22:17) *
Это разве задача? sm.gif
Интереснее на ней рассмотреть предельные возможности разных методов.

Оказалась ещё и какая sm.gif Я удалённо силой мысли внутрь полупроводника проник - см. мой модифицированный предыдущий msg. sm.gif

QUOTE (thermit @ Jan 30 2014, 22:19) *
Вы придумали собственную задачу и бодро взялись ее решать (не решив, кстати говоря). Между тем с вопросом тс можно ознакомиться в 1 посте.
"Да чихал я на Лохматого" - х/ф "Акваланги на дне" sm.gif
ViKo
Было бы интересно взглянуть на распределение, когда выдается более широкий диапазон чисел, а не только "температура тела". Подогреть пациента, охладить.
Потому что оно не нормальное (ненормальное!). sm.gif
AndrewN
QUOTE (ViKo @ Jan 30 2014, 23:38) *
Подогреть пациента, охладить.
Потому что оно не нормальное (ненормальное!). sm.gif
Я практически уверен, что АЦП битое. Поэтому и распределение шума асимметричное и с дырками. Дырки мне удалось (случайно) убрать, а уж асимметрию теплового шума - чего только битый АЦП не придумает...
Xtal1
Всех ответивших благодарю за помощь.
Вообщем, это не АЦП, потому сеанс телепатии был не совсем удачен.
Физически, эти значения представляют собой тики таймера в системе радиочастотной ToF. Т.е. мы измеряем расстояние между цифровыми трансиверами с помощью вычисления времени полета радиоволны.
Сам процесс измерения производится следующим образом:
Первое устройство (мастер) запускает счет таймера и отправляет ведомому пакет, в момент завершения отправки происходит событие захвата и защелкивается значение счетного регистра таймера, мастер переключается в режим приема. Далее, ведомое устройство, принимает пакет, переключается в режим передачи, и начинает отправку ответного пакета. Когда мастер ловит событие детектирования синхрослова, то это событие на другом канале захвата таймера вызывает защелкивание второго значения таймера (переполнения учитываются). После этого, получаем разницу между двумя событиями в тиках таймера. Вот именно эти значения и даются в первом посте.
Все задержки, константные, кроме одной - задержки между началом передачи и моментом возникновения события детектирования синхрослова. Подозреваю, что природа этого связана с частотой дискретизации входного сигнала в трансивере. Другими словами, насколько точно трансивер определяет фронты сигнала - насколько точный результат я и получаю на выходе. И "ненормальность" распределения, мне кажется, связана именно с этим. Во всяком случае, другого объяснения для того факта, что измерения стремятся занимать несколько определенных дискретных значений, я пока не придумал sm.gif

Сама проблема заключается не в том, что нужно получать большую скорость измерений, а в том, что устройства автономные и тратить энергию на слишком длинные сеансы связи - роскошь. Так, на данном этапе, для того, чтобы провести 100 циклов измерения я сейчас затрачиваю 85 мс, но усреднение 100 значений дает разброс больше желаемого. Приемлемую болтанку дает усреднение 1000 значений, но тогда и время измерения почти секунда. Так что при этом сеансы измерения расстояния прийдется проводить значительно реже, что, собственно и смущает.
Пытался вычислить для выборки максимумы и минимумы (все, если их несколько) и выбросить из усреднения, но это не дало результата. Видимо действительно нужно как-то задавать окно и за его пределами отсекать "левые" значения. Но пока не придумал по каким критериям задавать границы этого окна, имея просто выборку, например из сотни значений.
TSerg
Понимание подходов для обработки могут дать стат. исследования потоков, по примеру Вами приведенному в первом посте.
Если действительно имеет место более-менее стационарная кластеризация сигнала по уровням, то необходимо определить параметры такой кластеризации и обрабатывать сигнал в онлайн на основе полученных знаний.
P.S.
Если захотите - можете скинуть сюда или в личку некий набор подобных измерений для анализа.

AndrewN
QUOTE (Xtal1 @ Jan 31 2014, 10:27) *
Во всяком случае, другого объяснения для того факта, что измерения стремятся занимать несколько определенных дискретных значений, я пока не придумал
Да. Пара банальностей: всякое измерение это случайный процесс, в большинстве случаев с гауссовым распределением.

Из измеренных данных видно тримодальное распределение, причём оно проявляется уже на первом десятке измерений, и дальше статистика не меняется, что для 50, для 100, для 1000 всё едино. Значит должно быть хорошее, разумное объяснение для дырок в распределении. Эти дырки случайными не выглядят, а имеют систематический характер. Что это? Моя гипотеза - сбой (ошибка в работе) в измерительной системе.
_pv
если не секрет, то интересуют грязные подробности sm.gif
что за трансиверы, параметры передачи (битовая скорость) и в каких тугриках измеряется время в прикреплённом файле.

распеределние вполне нормальное, надо только округлить до значения (загрубить дисктеризацию до ~40 тугриков).
33590, 36630, 36670. потому что это и есть реальная дисктерность ограниченная в приёмнике, остальные более мелкие изменения полезной информации не несут.
Нажмите для просмотра прикрепленного файла
можно попробовать улучшить ситуацию если аккуратно смотреть частоту тактирования обоих трансиверов. так как частоты заведомо не одинаковые можно попробовать поймать их биения, чья фаза возможно даст дополнителную информацию о задержке распространения. но так как шумы (16 тугриков) не особо меньше дискретности (40 тугриков) то, пожалуй, ничего хорошего из этого не получится.

так что природу тут не обманешь, есть распределение с сигмой 16 тугриков, хочется сделать 1, усредняй 16^2 = 256 раз.
TSerg
Это нормальный подход, если говорить о традиционной фильтрации.
Если сигнал+помеха можно устойчиво кластеризовать, то появляется возможность выборки наиболее привлекательного кластера значений и далее обрабатываеть его относительно традиционными средствами.
Добавив динамическую кластеризацию получаем довольно робастный алгоритм.
TSerg
Что интересно, в итоге - спасибо ТС за подачу почти забытой мной идеи.
Набросал сегодня алгоритм динамической кластеризации в онлайн решении и на его основе - разбраковку помех по кластерам.
После вычленения остатка - считаем его сигналом (линейная обработка в частотной области) или делаем стат. оценку.
Stanislav
Цитата(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. потому что это и есть реальная дисктерность ограниченная в приёмнике, остальные более мелкие изменения полезной информации не несут.
Вот это действительно похоже на правду. Если загрубить, всё получается.
А чем Вы можете объяснить такую дискретность?
sup-sup
Можно и так:
Xtal1
Цитата(_pv @ Jan 31 2014, 13:02) *
если не секрет, то интересуют грязные подробности sm.gif
что за трансиверы, параметры передачи (битовая скорость) и в каких тугриках измеряется время в прикреплённом файле.


Трансиверы 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) *
Скажите, задержка получения результата фильтрации имеет значение?

Большого значения не имеет, если она, конечно, в разумных пределах. А какая задержка имеется ввиду, время расчета?
ViKo
Цитата(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. laughing.gif
Значит, есть (ее не может не быть) громадная задержка обработки сигналов в микроконтроллерах. А из-за разных прерываний и т.п. она еще и не постоянная. Вот и побочные всплески.

Цитата(sup-sup @ Feb 1 2014, 01:26) *
Можно и так:

Ух ты, в экселе (точнее, у меня LibreOffice Calc) можно и графики рисовать!

P.S. Что делают микроконтроллеры 36000 тактов? 05.gif
_pv
Цитата(Stanislav @ Feb 1 2014, 05:11) *
Вот это действительно похоже на правду. Если загрубить, всё получается.
А чем Вы можете объяснить такую дискретность?

раз тактовая частота 84МГц, или 12нс, то соответственно внутри приёмника сигнал оцифровывается на частоте 84/40 ~ 2МГц, что для полосы ~500 кГц, вполне разумно, зачем оцифровывать быстрее?
соответственно уже снаружи столь высокочастотным таймером измерять это дело абсолютно бестолку.
единственное как я уже говорил можно попробовать поймать биения этих 2МГц частот у приёмника и передатчика. тогда может и получится померить расстояние получше

Xtal1
Цитата(ViKo @ Feb 1 2014, 10:02) *
Умножаем 11,905 ns на 36600, получаем 0,44 ms. Умножаем на скорость света 300 000 000, получаем 130 714 m. Что-то не сильно похоже на 2 x 2 m. laughing.gif
Значит, есть (ее не может не быть) громадная задержка обработки сигналов в микроконтроллерах. А из-за разных прерываний и т.п. она еще и не постоянная. Вот и побочные всплески.


Ух ты, в экселе (точнее, у меня LibreOffice Calc) можно и графики рисовать!

P.S. Что делают микроконтроллеры 36000 тактов? 05.gif


Как я уже говорил выше, задержка естественно есть.
Она состоит из задержек на переключение режимов приема/передачи, самого времени передачи пакета...
Время входа в прерывания стабильно одинаковое (это тоже отлаживалось и проверялось), каких-то более приоритетных да и вообще других включенных прерываний нет.
И еще раз повторюсь, все задержки константные (во всяком случае насколько я смог их измерить с точностью до 41,6 нс).
Нестабильны задержки от начала отправки пакета передатчиком и до момента выдачи сигнала детектирования синхрослова приемником.
Они одинаково пляшут при передаче в обе стороны. И порядок гуляния этих задержек как раз укладывается в гуляния самого результата измерения.
Вы хотите сказать, что моя гипотеза о периоде дискретизации входного сигнала в трансивере, которым он квантует результирующие значения не верна?

Цитата(_pv @ Feb 1 2014, 10:05) *
раз тактовая частота 84МГц, или 12нс, то соответственно внутри приёмника сигнал оцифровывается на частоте 84/40 ~ 2МГц, что для полосы ~500 кГц, вполне разумно, зачем оцифровывать быстрее?
соответственно уже снаружи столь высокочастотным таймером измерять это дело абсолютно бестолку.
единственное как я уже говорил можно попробовать поймать биения этих 2МГц частот у приёмника и передатчика. тогда может и получится померить расстояние получше


А эти 40, это вы взяли скачки результатов из выборки?
То-есть Вы тоже считаете, что малину портит именно частота дискретизации самого трансивера?

Еще хочется услышать Ваше мнение по поводу вот этого.
Как думаете, там результат получился более красивый именно за счет несколько иного функционирования трансиверов (я имею ввиду, что у них частота дискретизации могла быть повыше)?
ViKo
Цитата(Xtal1 @ Feb 1 2014, 11:40) *
Нестабильны задержки от начала отправки пакета передатчиком и до момента выдачи сигнала детектирования синхрослова приемником.
Они одинаково пляшут при передаче в обе стороны. И порядок гуляния этих задержек как раз укладывается в гуляния самого результата измерения.
Вы хотите сказать, что моя гипотеза о периоде дискретизации входного сигнала в трансивере, которым он квантует результирующие значения не верна?

Почему они пляшут одинаково, а не каждый "танцует свой танец"?
У вас тактовая частота микроконтроллеров не синхронна с частотой трансиверов. Также и частоты самих микроконтроллеров не синхронны. Поэтому задержки могут гулять на такты.
Но у вас же гуляет на 40 тактов?! Так, это... эхо?

И 36000 тактов - еще раз интересуюсь, на что они пошли?
thermit
В таких статистических условиях имеет смысл вычислять нужное значение как 0.5*(max-min)

Код
clear all;
L=100;
s=importdata('sampling.xls');

s=s.data(:,2).';

mem=zeros(1,L);
r=[];
for i=1:length(s)
    mem=[mem(2:end) s(i)];
    a=max(mem);
    b=min(mem);
    r=[r 0.5*(a+b)];
end;
Xtal1
Цитата(ViKo @ Feb 1 2014, 10:52) *
И 36000 тактов - еще раз интересуюсь, на что они пошли?


Попробую ответить такой картинкой:

По названиям каналов должно быть понятно где какой сигнал. Период между маркерами - это то, что собственно измеряется. Задержка между SLAVE SYNC DETECTED и SLAVE TX точная и обеспечивается таймером МК. Не буду засорять ноосферу лишней информацией, просто скажу, что задержка эта необходима в силу особенностей работы самого трансивера.
Как видите, ничего там лишнего нету и при такой скорости передачи задержка особо меньшей быть не может. Формат пакета следующий: 4 байта преамбулы, 3 байта синхрослова, остальное - данные, но они никакой роли не играют.
ViKo
Цитата(Xtal1 @ Feb 1 2014, 12:40) *
По названиям каналов должно быть понятно где какой сигнал. Период между маркерами - это то, что собственно измеряется. Задержка между SLAVE SYNC DETECTED и SLAVE TX точная и обеспечивается таймером МК. Не буду засорять ноосферу лишней информацией, просто скажу, что задержка эта необходима в силу особенностей работы самого трансивера.
Как видите, ничего там лишнего нету и при такой скорости передачи задержка особо меньшей быть не может. Формат пакета следующий: 4 байта преамбулы, 3 байта синхрослова, остальное - данные, но они никакой роли не играют.

Задержка между обнаружением сигнала и передачей - больше 0.2 ms. Говорите, нужно? Ну, пусть. Гуляет на период таймера.
Время обнаружения сигнала - тоже около 0.25 ms. Тоже гуляет...
Xtal1
Цитата(ViKo @ Feb 1 2014, 12:48) *
Задержка между обнаружением сигнала и передачей - больше 2 ms. Говорите, нужно? Ну, пусть. Гуляет на период таймера.
Время обнаружения сигнала - тоже около 2.5 ms. Тоже гуляет...

)) да там всего 1 ms показана, где Вы это увидели?
ViKo
Цитата(Xtal1 @ Feb 1 2014, 13:50) *
)) да там всего 1 ms показана, где Вы это увидели?

Запятую забыл. Я поправлю в сообщении, в 10 раз уменьшу.

Так отбросьте выборки, отстоящие далеко от среднего, и всё.
Xtal1
Цитата
Гуляет на период таймера

допустим, но какое это имеет отношение к вопросу...
ViKo
Цитата(Xtal1 @ Feb 1 2014, 13:52) *
допустим, но какое это имеет отношение к вопросу...

Лучшего, чем уже сказали, делать нечего.
Чем бороться с плохим распределением, лучше его не создавать. Вы же должны дать себе отчет, что ломает ваше нормальное распределение.
А покажите числа между приемом сигнала и передачей у слэйва. Посмотрим, насколько они стабильные.
Xtal1
Цитата(ViKo @ Feb 1 2014, 13:06) *
Лучшего, чем уже сказали, делать нечего.
Чем бороться с плохим распределением, лучше его не создавать. Вы же должны дать себе отчет, что ломает ваше нормальное распределение.
А покажите числа между приемом сигнала и передачей у слэйва. Посмотрим, насколько они стабильные.

Простите, но складывается впечатление, что вы читаете написанное через строчку... У слэйва задержка стабильная и прыгает на один период таймера, там проблем нет.
Я высказал (уже не раз) свою версию причин происходящего (это к вопросу о "плохом" распределении).

Stanislav
Цитата(Xtal1 @ Feb 1 2014, 11:21) *
Наверное, я не совсем понял вопрос, но тот сигнал, который я приводил, получен при неизменном взаимном расположении трансиверов (на расстоянии около 2-х метров) и предметов вокруг них (за исключением меня, сидящего рядом на стуле).
Понятно.
Мой вопрос касался параметров взаимного движения объектов. Это можит наложить ограничения.


Цитата(Xtal1 @ Feb 1 2014, 11:21) *
Большого значения не имеет, если она, конечно, в разумных пределах. А какая задержка имеется ввиду, время расчета?
Задержка сигнала в фильтре, и непостоянство ГВЗ в его БИХ-реализации.

Цитата(_pv @ Feb 1 2014, 12:05) *
раз тактовая частота 84МГц, или 12нс, то соответственно внутри приёмника сигнал оцифровывается на частоте 84/40 ~ 2МГц, что для полосы ~500 кГц, вполне разумно, зачем оцифровывать быстрее?
соответственно уже снаружи столь высокочастотным таймером измерять это дело абсолютно бестолку.
Вполне правдоподобное объяснение, спасибо.
ЦифрА - зло...

Цитата(Xtal1 @ Feb 1 2014, 12:40) *
Как думаете, там результат получился более красивый именно за счет несколько иного функционирования трансиверов (я имею ввиду, что у них частота дискретизации могла быть повыше)?
Если что - дискретность (неопределённость) во времени не накладывает ограничений на точность.
На время измерения - накладывает.
Извините, если это лишнее.

Цитата(thermit @ Feb 1 2014, 13:05) *
В таких статистических условиях имеет смысл вычислять нужное значение как 0.5*(max-min)
Вряд ли.
Вычисление максимума и минимума на ползучем отрезке вычислительно сложнее простого усреднения. А результат даст худший, т.к. не учитывает статистику распределения значений функции.
thermit
Цитата
Stanislav:
Вряд ли.
Вычисление максимума и минимума на ползучем отрезке вычислительно сложнее простого усреднения. А результат даст худший, т.к. не учитывает статистику распределения значений функции.


Усреднение с приемлемым результатом и все такое требует длинных (противных тс) порядков.
О лучшести или худшести оценок вообще судить сложно, т к критерий отсутствует.
Распределение по всей видимости описывается гистограммой примера. Исходя из нее матожидание почти совпадает с серединой полного размаха (критерий корректности оценки). Отсюда и алгоритм. Элементарных операций столько же, сколько у приемлемого среднего, но задержка в пределах требований тс.
_pv
Цитата(Xtal1 @ Feb 1 2014, 15:40) *
А эти 40, это вы взяли скачки результатов из выборки?
То-есть Вы тоже считаете, что малину портит именно частота дискретизации самого трансивера?

очень давно делал тоже самое с nrf24l01, там битовая скорость 2mbps ну и полоса соответственно шире, а ошибка за один "пинг" соответственно меньше, картинка выглядела примерно так же, хорошо было видно дискретность частоты приёмника в несколько МГц которые захватывать более высокочастотным таймером бесполезно, конкретных цифр и подробностей уже не вспомню.

Цитата(Xtal1 @ Feb 1 2014, 15:40) *
Еще хочется услышать Ваше мнение по поводу вот этого.
Как думаете, там результат получился более красивый именно за счет несколько иного функционирования трансиверов (я имею ввиду, что у них частота дискретизации могла быть повыше)?

результат там получился вроде как 18нс сигмы при усреднении по 1000 измерений то есть 560нс джиттера за одно измерение, у вас же сигма 16/84e6 = 200нс.

Цитата(Stanislav)
Вполне правдоподобное объяснение, спасибо. ЦифрА - зло...

злость цифрЫ тут, пожалуй, непричём.
при полосе в 500кГц даже если убрать всю цифру, врядли джиттер станет меньше чем те же намеренные ТС 200нс. ну и по гистрограмме видно, что дискретность хоть и заметна, но особо не мешает, вот если бы там всего одна палка осталась, то хоть заусредняйся, точность будет определяться в +- полбина в 500нс, а раз в соседние бины гистограммы хоть что-то попало ~20% отсчётов, то эта дискретность уже не особо и мешает.
Stanislav
Цитата(thermit @ Feb 1 2014, 18:47) *
Усреднение с приемлемым результатом и все такое требует длинных (противных тс) порядков.
Да уж... Эти противные скользящие средние, особенно в проклятом рекурсивном варианте. biggrin.gif

Цитата(thermit @ Feb 1 2014, 18:47) *
О лучшести или худшести оценок вообще судить сложно, т к критерий отсутствует.
Простите, но мне показалось, что Вы обмолвились о другом.

Цитата(thermit @ Feb 1 2014, 18:47) *
Распределение по всей видимости описывается гистограммой примера.
Нет.
Для выведения несмещённой оценки по Вашему методу потребуется делать поправки на статистики более высоких порядков.
Думаю, что могу придумать последовательность, соответствующую данной гистограмме, где он будет давать ошибку относительно среднего значения (состоятельной и несмещённой оценки матожидания) на интервалах любой длины.

Цитата(thermit @ Feb 1 2014, 18:47) *
...Исходя из нее матожидание почти совпадает с серединой полного размаха (критерий корректности оценки). Отсюда и алгоритм.
Оно не совпадает. И смещение центра тяжести фигуры относительно кода с наибольшей мощностью как раз и является точной поправкой к дискретной оценке расстояния, соответствующего данному коду. Иными словами, "дробной частью" оценки.

Цитата(thermit @ Feb 1 2014, 18:47) *
...Элементарных операций столько же, сколько у приемлемого среднего, но задержка в пределах требований тс.
Гораздо больше операций. Если учитывать их особенность выполнения в машине.
Относительно задержки конкретных требований не опубликовано.

ЗЫ. Просьба не расценивать мой пост как "наезд", или повод для беспредметного спора. Пожалуйста.


---------------------------------------------------------------

Цитата(_pv @ Feb 1 2014, 19:22) *
злость цифрЫ тут, пожалуй, непричём.
при полосе в 500кГц даже если убрать всю цифру, врядли джиттер станет меньше чем те же намеренные ТС 200нс.
Это определяется отношением С/Ш, которое зависит от... и т.д.
Даже по гистограмме видно, что аналог будет гораздо лучше в плане скорости получения решения в доверительном интервале.

В чём я с Вами соглашусь, так это в том, что мерить надо фазу. Но - сигнала, абсолютную, устраняя неоднозначности при помощи кодовых измерений. Это самый точный и быстрый способ. О возможности практической его реализации в данном сетапе могу только догадываться. Скорей всего - ахти...


Цитата(_pv @ Feb 1 2014, 19:22) *
...ну и по гистрограмме видно, что дискретность хоть и заметна, но особо не мешает, вот если бы там всего одна палка осталась, то хоть заусредняйся, точность будет определяться в +- полбина в 500нс, а раз в соседние бины гистограммы хоть что-то попало ~20% отсчётов, то эта дискретность уже не особо и мешает.
sm.gif
Если идёт речь о точности оценки в условиях статичности - согласен.
Но смещение оценки - всё же будет.
В этом и беда цыфрЫ.
_pv
Цитата(Stanislav @ Feb 2 2014, 05:49) *
Это определяется отношением С/Ш, которое зависит от... и т.д.
Даже по гистограмме видно, что аналог будет гораздо лучше в плане скорости получения решения в доверительном интервале.

да, точность измерения времени прихода сигнала определяется полосой и SNR, но скорее всего это определяется в приёмнике входными усилителями/смесителями/..., то есть раньше чем дело дойдёт до АЦП. Если бы даже в приёмнике стоял идеальный АЦП с частотой в 100 раз выше, на выходе ТС получил бы абсолютно такую же гистограмму с тем же среднеквадратичным отклонением в 200нс. которую для получения необходимой точности те же 1000 раз пришлось бы усреднять.

Цитата(Stanislav @ Feb 2 2014, 05:49) *
Если идёт речь о точности оценки в условиях статичности - согласен.
Но смещение оценки - всё же будет.
В этом и беда цыфрЫ.

про смещение оценки можно немного подробнее?
sup-sup
Цитата(ViKo @ Feb 1 2014, 11:02) *
Ух ты, в экселе (точнее, у меня LibreOffice Calc) можно и графики рисовать!

Анализ проводить можно. Например, в данном случае вполне хватает длины усреднения в 192 точки (3x64 скользящего среднего). Можно посмотреть спектр, возможно, по нему можно оценить что резать (даны картинки во временной области - исходный сигнал и сигнал после трехкаскадного скользящего среднего и в частотной области - то же самое).
Stanislav
Цитата(_pv @ Feb 2 2014, 13:53) *
Если бы даже в приёмнике стоял идеальный АЦП с частотой в 100 раз выше, на выходе ТС получил бы абсолютно такую же гистограмму с тем же среднеквадратичным отклонением в 200нс. которую для получения необходимой точности те же 1000 раз пришлось бы усреднять.
Здесь среднеквадратичное отклонение - не 200 нс. sm.gif

Цитата(_pv @ Feb 2 2014, 13:53) *
про смещение оценки можно немного подробнее?
Пожалуйста.
Это может иметь место, например, для нессимметричных и негауссовых распределений.
_pv
Цитата(Stanislav @ Feb 2 2014, 21:34) *
Здесь среднеквадратичное отклонение - не 200 нс. sm.gif

а сколько?? 16 тугриков по 12 нс.
Stanislav
Цитата(_pv @ Feb 2 2014, 20:54) *
а сколько?? 16 тугриков по 12 нс.
Виноват, ошибся.
Неправильно открыл в Матлабе.
С остальным тоже согласен. При условии, что распределение - гаусс (а здесь это не так).
Xtal1
Так все-таки смотреть в сторону БИХ-фильтров?

И еще такой вопрос: чем трехкаскадное скользящее среднее по 64 отсчетам лучше, нежели просто усреднять 192 отсчета, если получать отсчет с выхода для каждого входного не требуется?
ybrk
Цитата(Xtal1 @ Feb 3 2014, 13:15) *
Так все-таки смотреть в сторону БИХ-фильтров?

И еще такой вопрос: чем трехкаскадное скользящее среднее по 64 отсчетам лучше, нежели просто усреднять 192 отсчета, если получать отсчет с выхода для каждого входного не требуется?


Не имеет значения, бих или ких. Длина импульсной характеристики определяется полосой.
Усреднение по 192-м отсчетам эквивалентно фильтрации однородным ких 191-го порядка. 3 усреднения по 64 эквивалентно последовательной фильтрации 3-мя однородными ких. Частотные характеристики на рисунке.
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.