LINUX.ORG.RU

Цифровая обработка сигналов - определение фазы?


0

0

Вопрос длинный и немного офтопичный. Интерес представляет только для тех, кто занимался обработкой сигналов.
Есть аналоговый сигнал (смесь гармоник). С помощью АЦП он оцифровывается и забивается в буффер конечной длины (пусть будет 128). Посколько с практически 100% вероятностью сигнал на концах промежутка оцифровки терпит разрыв (иными словами сигнал(начало) != сигнал(конец) ) применям стандартную методику - перемножаем сигнал со "шляпой" (окном sin(\pi*(0:127)/127)^2). После этого взятие фурье преобразования и абсолютной величины позволяет получить с хорошей точностью амплитуды гармоник. Но поскольку перемножение со "шляпой" во временной области приводит к свертке точной АЧХ c фильтром (1/2,-1/2) в частотной, то как определить фазу гармоник? Интересно, что фаза ( точнее arctg( Im(F)/Re(F) ) ) примерно постоянна с точностью +/-\pi в области рядом с частотой гармоники, но само это значение никак с настоящей фазой не скоррелировано. Есть ли какое-нибудь окно/фильтр, которое позволяет получить фазу без искажений?


Не совсем понял, чё ты пытаешся зделать. Если найти чью-нибудь фазу, то её можно извлечь из Фурье-образа. Если подогнать смещения буферов относительно друг друга, и сигнал периодический, ИМХО лучше корелляцию поюзать.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

>>Если найти чью-нибудь фазу, то её можно извлечь из Фурье-образа.

Ты не в теме. Возьми два периодических сигнала - sin(2*pi*(0:127)/8) и sin(2*pi*(0:127)/7) (0:127 - это 0,1,2,...127), потом сделай быстрое преобразование Фурье для каждого и ужаснись. Во втором случае, как раз разрыв на концах промежутка дает широкие крылья в спектре, которые забивают полезный сигнал. Чтобы их подавить, используют этот трюк со сглаживающими окнами. Окно уширяет спектр, но интегрированием можно восстановить данные об амплитуде. Но я никак не въеду, можно ли получить данные о фазе. Вроде бы в задаче ничего сложного нет, если кто-то занимался обработкой сигналов, то он может просто знать ответ и не нужно велосипеды изобретать.

geekkoo
() автор топика
Ответ на: комментарий от geekkoo

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

Я не занимался (точнее, "занимался", в смысле курсовую писал), но вот тебе велосипед: после извлечения аплитуд/частот, выражаешь сигнал как сумму гармоник, и подбираешь фазы (методом наименьших квадратов или еще как). Т.е. у тебя есть P(k), k=0..127 - измерения, формула оценки вида F(k) = sum(A[i]*sin(w[i]*k/(2*pi)+gamma[i])), i=1..N_garmonic. A[i] и w[i] известны из фурье, осталось найти такие gamma[i], чтобы достичь min(sum((P(k)-F(k))**2, k=0..127). Метрика может быть и другой, сам понимаешь.

Если я что-то помню, задача даже решается аналитически - maple в руки.

anonymous
()
Ответ на: комментарий от geekkoo

Вообщем, велосипеды - это наше всё ;)
Любое сглаживающее окно дает небольшой частотно-зависимый фазовый сдвиг, просто потому что у любого окна будет разрывна некоторая n+1 производная. Кроме этого восстановление фазы - процедура очень капризная. Если для определения амплитуды точности бывает достаточно, то для фазы ошибка гораздо больше.

geekkoo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.