[an error occurred while processing this directive]
По второму абзацу (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено homekvn 20 марта 2006 г. 11:28
В ответ на: Ответ: отправлено <font color=gray>R2D2</font> 19 марта 2006 г. 03:15

Первое и существенное. АКФ надо брать прямо в частотной области, т.е.
если S(m) - спектр сигнала s[n], то нам надо найти величину

Rs(k)= S * S (k), (1)

где "*" - операция линейной свертки.

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

Теперь перейдем к Вашим реалиям. У Вас есть не одна, а три (или более) компонент. Каждая имеет свой период. Каждой на спектре будет соответствовать свой набор равноотстоящих друг от друга дельта-функций. Только теперь у нас на спектре все будет вперемешку. Нам надо отделить одну периодическую последовательность дельта-функций от другой. Как это сделать?

Я предложил следующий способ. Вернемся опять к примеру, когда мы имеем дело только с одной компонентой; соответсвенно, в частотной области у нас будет только одна последовательность равноотстоящих "палок". Если мы возьмем и вычислим АКФ этих "палок" по формуле (1), то получим также последовательность периодических затухающих палок с тем же периодом, но эта последовательность будет иметь ярко выраженный максимум в нуле, а следующее за ним по величине значение будет в точке, равной периоду последовательности. В промежутках между палками будут лишь незначительные шумы. Поэтому после вычисления АКФ по формуле (1) надо просто найти первый максимум (в нуле, поэтому его и искать особенно нечего) и первую палку, превышающую некоторый выбранный порог (если бы не случай двух, трех и более компонент, то можно было бы говорить вторую по величине палку, но мы намеренно не будем акцентировать внимание на этом обстоятельстве). Взять расстояние между ними - это и будет период последовательности. Величину порога удобно взять как некоторый процент от величины центральной (нулевой) палки.

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

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

Еще одна проблема может возникнуть, если допускается наличие компонент с кратным периодом. Она сложнее, но все равно решается. Если нужно будет - напишите, я опишу, как я бы ее решил. Впрочем, думаю, что и Вы без труда найдете способ ее решения.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru