Перейти к содержанию
    

Определение периода сложного сигнала

Есть сигнал, принятый с платы АЦП (ЛА-н10м8PCI100Mhz) Необходимо определить его период. Подскажите пожалуйста алгоритмы, с помощью которых это можно было бы сделать.

Пример сигнала:post-53910-1259346188_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расстояние между вершинами = период.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигнал чем-то напоминает речь... С виду... Может поможет - но есть немало информации (в сети, в описаниях вокодеров) по оценке периода основного тона речевого сигнала. Очень возможно, что это то, что Вам нужно.

 

Что касается вашей АКФ - фильтрануть ее ФНЧ, и потом просто найти максимумы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот для этого сигнала(тот, что сверху), АКФ дает совершенно невразумительный результат(тот, что снизу). Как же быть? Ведь это сигнал с одного и того же датчика...

post-53910-1259399116_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Автокорреляция дает следующую картину:post-53910-1259348802_thumb.jpg

И что теперь с ней делать?

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

 

P.S. Судя по картинке исходного сигнала, здесь мы имеем дело с акустическим устройством, например пьезокерамическим приёмником. Причём характерный резонанс составляет около 10 отсчётов АЦП. После вычисления автокорреляции период основной (резонансной) частоты колебаний удваивается и становится равным примерно 5 отсчётам. Значит достаточно ВЧ фильтра, убирающего колебания на графике автокорреляции с периодом помехи большим, чем примерно 5 отсчётов АЦП.

 

P.P.S. Для работы с источниками сигнала, имеющими достаточно выраженный резонансный характер, хорошо подходит технология Гильберт-преобразования с центральной частотой, равной резонансной частоте. После этого из двух квадратур вычисляется модуль вектора (алгоритм CORDIC), т.е. огибающая сигнала.

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

Изменено пользователем serebr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ctrl-Alt-De1 - выложи файл с данными исходной картинки. Я посчитаю через преобразование Гильберта и выложу результат - картинку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файл бинарный, содержит двухбайтовые целые с прямым порядком байт. Это только малая часть файла, весь слишком долго загружать (~50Мб), но думаю этого достаточно для примера

Signal.dat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сигнал, похоже, обрезан (ограничен) по амплитуде значениями от -128 до +127. На ограничениях алгоритм будет работать некорректно. На самой первой картинке сигнал был необрезан, подобного нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На первой картинке просто амплитуда сигнала не превысила 127. Но, видимо так происходит не всегда :(. сам только сейчас заметил. АЦП то 8-ми разрядный, отсюда и ограничение...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Результат обработки приведен на картинке.

Первый график - исходный сигнал.

Второй - исходный + квадратура после преобразования Гильберта

Третий - модуль вектора (огибающая сигнала)

Четвёртый - автокорреляция

Красными прямоугольниками показаны области ограничения исходного сигнала и соответствующие им погрешности в работе алгоритма (паразитные колебания огибающей).

 

P.S. Дополнительной фильтрации по высоким частотам не потребовалось.

post-1869-1259468494_thumb.jpg

Изменено пользователем serebr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Четвёртый - автокорреляция

АКФ какого сигнала? Огибающей или исходного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...