[an error occurred while processing this directive]
Мне кажется, что принципиально задача решаема. Я бы попробовал так: (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено homekvn 18 марта 2006 г. 11:41
В ответ на: Multiple base tone detection отправлено <font color=gray>R2D2</font> 18 марта 2006 г. 01:17

Рассмотрим спектр одной из компонент суммы периодических сигналов, полученный на основе применения ДПФ. Здесь пока не будем обращать внимания на то обстоятельство, что от истинного спектра данный спектр все-таки будет отличаться, поскольку наверняка интервал, на котором мы взяли ДПФ будет отличаться от периода сигнала и, соответственно, будут иметь место нежелательные эффекты Гиббса.

Поскольку спектр каждого отдельно взятого периодического сигнала из общей суммы будет состоять из равноотстоящих "палок", то очень легко эти палки отделить от других "палок", имеющих отношение к другому периодическому сигналу, примешанному к этой сумме. Для этого в спектральной области вычисляем автокорреляционную функцию и находим из нее путем выбора порога расстояние между повторением "палок". Этим действием мы фактически отыщем период следования "палок", относящихся к каждой отдельной сумме. Шумы, понятное дело, здесь нам мешать вообще не будут, если они не коррелированы с сигналом (что, согласитесь, для Вашего случая было бы нонсесом).

Итак, найти период можно. Детали, как это сделать, я уже не описываю. Скажу лишь, что задачу подобную я решал и даже более сложную. Поскольку мне надо было вытащить в музыкальном сигнале периодические компоненты типа "тыц-тыц-тыц" на фоне других также периодических компонент. Я тогда с целью некоторого облегчения и в то же время загрубления задачи делил спектр по зонам и на кажом из отдельных участков вытаскивал периоды.

После того, как периоды найдены, можно уже вести речь о создании согласованного фильтра, заточенного под каждый из периодов. Этот согласованный фильтр должен рассчитываться Вашей же программой.

Впрочем, еще идея. Можно начать разделение сигналов прямо в частотной области. Это должно быть достаточно экономично. Как это сделать? Да в лоб. Период "палок" знаем - пусть он для одной из компонент суммы есть Т. Берем и в цикле бежим по возможным местам "дислокаци" палок с шагом Т и фиксируем амплитуду и фазу, которые на этих частотах имеют место быть (с фазой, правда, будет немного сложнее, ибо она может быть искажена сильно). Таким образом составлем рабочий портрет компоненты сигнала с периодом Т прямо на новой частотной оси, где еще ничего нет. Берем потом от этого дела обратное БПФ. Делаем поправку на то, что нужно overlap-save применить, поскольку обработка блочная и блоки надо друг с другом соединять.

На самом деле, чтобы убрать нежелательный эффект, вызванный тем, что выбранный интервал БПФ не будет соответствовать периоду компоненты суммы, которую мы рассматриваем, можно добавить еще следующий шаг. После того, как определили период следования "палок", а, следовательно, период одной из компонент сигнала, выполняем берем исходный сигнал и выполняем БПФ еще раз, но уже с интервалом, кратным найденному периоду Т. Там уже отбрасываем всякую ерунду (все другие компоненты суммы, которые мы будем рассматривать позже, тем же методом). Создаем спектр "чистой" компоненты, как я уже писал выше. И делаем обратное БПФ, тем самым, имея желаемое.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru