|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
БПФ бинарного сигнала, поиск частоты и фазы23.07.2017, 23:50. Показов 8369. Ответов 51
Метки нет (Все метки)
Вляпался по неосторожности в ЦОС, совсем не мою область.
Есть светодиод. Он мигает с частотой около 200 Гц. Есть бинарный вектор. семплированный с частотой 1 мкс. Вектор бинарный, т.е. 0,1, амплитуды нет. Есть довольно много нестационарного шума. Задача: найти фазу сигнала за минимальное количество семплов. Частота известна. Сразу на ум пришло преобразование Фурье, но я не знаю как его применять в такой ситуации. Что подскажете?
0
|
|
| 23.07.2017, 23:50 | |
|
Ответы с готовыми решениями:
51
Изменение фазы сигнала с использоваением БПФ БПФ. Как найти фазы гармоник БПФ, поиск максимума спектральной плотности, поиск экстремума (максимума) в отсчетах БПФ |
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 12.08.2017, 23:26 | |
|
так интересен же наверное не чистый отфильтрованный синус сам по себе, а его амлитуда. тем более что диоды скорее всего не синусом, а меиндром питаются.
на картинке норма интеграла Фурье в 50мс окне, которое по 12.5мс сдвигается. полоса получается 20Гц, если меньше, то разные диоды начинают друг дружке уже мешать у них частота на 20Гц и отличается. на вход подавал данные из smallp.csv c соответствующей меткой времени. Герцель даст абсолютно тот же результат просто без вычисления тригонометрии. только Герцелю сетка по времени равномерная нужна, соответственно данным надо передискретизацию делать. что тоже не сильно сложно и в пару умножений на отсчёт делается.
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 12.08.2017, 23:58 | |
|
А как эту норму интеграла Фурье посчитать? У меня в универе ЦОС не было, я понятия более-менее выучил но как из одного получить второе - увы. Комплексные числа тоже понимаю поверхностно :(.
Вот беру я 50 мс окно. У меня есть вектор таймстампов smallt, из него и smallp я делаю гистограмму histT. Теперь я могу применить к гистограмме алг. Гёрцеля и получить нигнитуду сигнала для искомой частоты. Могу так же посчитать спектр БПФ и получить преобразование Фурье для каждой точки. Каковы дальнейшие мои шаги? Что на что умножить, поделить?
0
|
|
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
||||||
| 13.08.2017, 01:53 | ||||||
|
Герцелю нужна равномерная сетка по времени.
Фурье: перемножить с косинусом, проинтегрировать == Re перемножить с синусом, проинтегрировать == Im Norm = Sqrt[Re^2+Im^2] код математики, если поможет:
0
|
||||||
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 13.08.2017, 02:30 | |
|
Спасибо большое! С кодом гораздо понятнее.
Сначала я знак эвента умножаю на косинус...как задается частота freq? Через период т.е 1e6/200 или как-то иначе? Надо ведь знать частоту дискретизации ведь. У меня получается два вектора: один с синусом второй с косинусом. Потом я считаю норму вектора. pic = Map[Norm, pic, {2}]; - маппинг функция по второму измерению вектора pic, да?
0
|
|
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 13.08.2017, 02:52 | |
|
да через период, только 200/1e6
в каждом пикселе получается вектор из двух значений, интеграла (там +=) с синусом и с косинусом, вместо этого комплексного значения берётся его амплитуда
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 13.08.2017, 15:16 | |
|
Ура! Получилось. Бесконечно вам признателен. Правда все еще есть шероховатости.
У меня родилась концепция двигающегося окна: когда мы добавляем i-тый эвент {(2*data[[1, i]] - 1)*Cos[2.0*Pi*freq*data[[2,i]]], (2*data[[1,i]] - 1)*Sin[2.0*Pi*freq*data[[2,i]]]}; мы можем сразу отнять i-WymdowLength эвент. И каждые несколько мс просто находить норму вектора. Это сработает? Я правильно понял что все равно я не смогу быстрее отслеживать маркеры чем минимальная частота мигания? Тогда можно децимировать частоту замера с 1е6 на несколько порядков простым усреднением Х значений. Это поможет уменьшить загрузку проца. Не потеряю ли я какие-то данные? По гёрцелю. Нетрудно перескалить данные в "псевдокадры" каждые 0.1 мс например. Но как именно потом применить гёрцель к такому вектору? Гёрцеля уже ручками написал, он мне нравится своей итеративностью.
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
| 13.08.2017, 19:59 | |
|
Дополнительный вопрос, кроме Гёрцеля:
Какие методики можно попробовать чтобы уменьшить время, необходимое на распознание и увеличить стойкость против шума? Сейчас буду пробовать делить кадр на перекрывающиеся на 50% регионы и считать отдельно по каждому региону. Должно усилить сигнал\шум внутри отдельно взятого региона. Как oomomstir советовал.
0
|
|
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 13.08.2017, 22:50 | |
|
если у гугла спросить про sliding dft, он много чего интересного расскажет.
можно ещё про что-то вроде фапч подумать, но который не только за частоту хватается, но и за положение на картинке. считать разность предсказанной картинки и реальной на 3х соседних частотах * 9 положений вокруг предыдущего и соответственно подстраивать частоту и положение. а разве есть проблемы с вычислительной сложностью четырёх Герцелей на 1МГц?
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
||
| 14.08.2017, 16:26 | ||
Сейчас алгоритм ограниченно адаптивный - после нахождения маркеров в последующие циклы выполняется просто обновление координат маркера поиском пика в некоем радиусе вокруг последней известной позиции маркера и обновление фазы поиском пика во временной гистограмме вокруг ожидаемого времени вспышки. Если вспышки не было, радиус и временной диапазон увеличиваются а уверенность падает. Когда уверенность в маркере упадёт ниже критического значения, производится поиск маркера с нуля. Поэтому меня так интересует именно поиск с нуля - постепенные апдейты худо-бедно работают. Что пока не продумано это как быстро определять наличие маркера вообще. Сейчас если один из маркеров пропадает, то благодаря адаптивному алг-му он еще некоторое время "угасает", потом запускается поиск но это съедает несколько циклов (циклов частоты маркера, а не проца), и для самых медленных маркеров получается что время послесвечения доходит до 1\20 секунды что отстойно даже по сравнению со средней пром. камерой.
0
|
||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 14.08.2017, 21:28 | |
|
ну так "тебе ж говорят музыкасенсор - говно, а ты споришь" (с)
если частоты отличаются на 20Гц, и с/ш не особо больше единицы, то тут природу никак не обмануть, 1/20 секунды надо понаблюдать чтобы частоты отличить. раз сенсор умеет до 1МГц - задирайте частоту маркеров, чтобы с камерами соревноваться. на низкой частоте обычный сенсор будет работать куда лучше.
0
|
|
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
||
| 15.08.2017, 02:09 | ||
Сенсор, собака, прошеный. Теоретиццки - да реакция за 1е-6 секунды. Практиццки он так быстро среагирует только на ядерный взрыв. Если вспышка проходит в изначально темной "непрогретой" области то пиксель может ее пропустить . Лучше всего реагирует на изменения в хорошо освещенной области или там где они только что были. Решение пока что - взять по два диода, один постоянно вкл а второй мигающий. Но что-то мне говорит что не слишком поможет. Экспериментально сегодня установил что гарантированно видит до 5 кГц, возможно больше но диодик у меня под рукой совсем дохлый и светит еле-еле. Повторим тесты с 1-2 кГц диодами, должно помочь. Ну а децимацию-то делать? Поможет ли или нет? Теоретически если вместо усреднения по Х отсчетам сделать суммирование по ним же то амплитуда сигнала должна возрасти ведь?
0
|
||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 15.08.2017, 10:20 | |
|
это да, чувствительность у сенсора не очень, потому что если он на каждый фотон реагировать начнёт ну или хотя бы на сотню фотонов, как обычные камеры, потоки данных станут на много порядков больше.
ну и при увеличении частоты яркость тоже поднять придётся хотя бы в корень из частоты раз. преобразованию Фурье всё равно, но если децимацию сделать не правильно, можно только ухудшить, перенеся высокочастотные шумы в полосу сигнала. и простое усреднение не самый лучший фильтр перед децимацией. почитайте хотя бы про децимирующие CIC фильтры. сумма от среднего ничем не отличается, только постоянным коэффициентом. как для сигнала так и для шума.
0
|
|
| 15.08.2017, 10:20 | |
|
Различие частоты сигнала и частоты его АКФ Сохранение фазы синусоиды при резком изменении частоты БПФ. Cоответствие частоты после преобразования Оценка фазы сигнала Детектирование фазы сигнала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|