|
Вычисление фазы |
|
|
|
May 12 2015, 06:54
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Здравствуйте! Возникли трудности со следующим вопросом.
Иммется антенна доплеровского локатора K-MC4, и для вычисления направления движущегося объекта мне необходимо вычислить разность фаз сигналов I и Q, идущих с антенны. Рассчет делаю в частотной области, пользуясь формулой tg(fi) = Im/Re, т.е. fi = atan2f(Im, Re); разница фаз I и Q в моем случае должна быть 90 градусов, но в результате получаю никак не анализируемые данные. Вопрос можно ли таким образом, переводя в частотную область, правильно высчитать фазу? Где то слышал что так не делают, к тому же stm в arm_math.h для построения АЧХ предоставляется функция magnitude, и она в моем случае правильно вычисляет бин и используя его я вычисляю частоту, а для вычисления фаз такой функции нет. Совпадение ли или таким образом в частотной области действительно фазу не получить? Можете тогда подсказать какие есть методы и что предпочтительней будет в моем случае? (Весь цос реализуется в stm32)
|
|
|
|
|
May 12 2015, 09:20
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Теорию изучаю, почитаю что вы скинули, но хотелось бы побольше конкретики по вопросу
|
|
|
|
|
May 12 2015, 12:19
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
На данном этапе точность не столь важна, нужно определить направление движения (к нам/от нас). Это определяет знак разница фаз I и Q (должна быть +90 или -90 градусов). Сейчас читаю про эту кучу проблем, в книге Стивена Смита есть глава "проблемы представления в полярных координатах", там описаны и проблемы и решения. Что касается того, что частота может не попадать точно в бин, я же беру частоту конкретно в бине и фазу вычислить нужно в нем, поэтому надеюсь что не нужно лезть в эту тресину с не попаданием в бин и смещением, тем более этот сдиг не должен быть значительным) Еще у меня КИХ фильтр имеется и как понимаю он тоже фазовый сдвиг дает? (предполагаю что он линейный)
|
|
|
|
|
May 14 2015, 06:35
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Смотрите, чтобы вычислить частоту моего синуса, я как раз вычисляю какой частоте соответствует найденный бин (погрешность может быть примерно в 29 Гц, учитывая что Fs = 60 кГц, N = 2048 отсчетов). Таким образом получаю частоту синуса и теперь нужно найти его фазу. Ищется ли фаза этой частоты в том же бине что и частота, если пока не рассматривать, что частота не попадает в бин, т.е. не кратна Fs/N?
|
|
|
|
|
May 14 2015, 07:15
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Alexey_pashinov @ May 14 2015, 09:35)  Смотрите, чтобы вычислить частоту моего синуса, я как раз вычисляю какой частоте соответствует найденный бин (погрешность может быть примерно в 29 Гц, учитывая что Fs = 60 кГц, N = 2048 отсчетов). Таким образом получаю частоту синуса и теперь нужно найти его фазу. Ищется ли фаза этой частоты в том же бине что и частота, если пока не рассматривать, что частота не попадает в бин, т.е. не кратна Fs/N? А вы посмотрите внимательно как вычисляется один бин DFT, это всего лишь выход полосового FIR фильтра с прямоугольной огибающей импульсной характеристики.
|
|
|
|
|
May 14 2015, 08:37
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Вот результаты ачх и фчх, в бине 150 как раз мой синус и фчх там ведет себя немного не так как в шуме, т.е. остальных бинах. Можно какие то выводы сделать из данной фчх? В предыдущем вычислении фазы не учитывал данные условия if Re < 0 && Im < 0 fi = fi - 180; end if Re < 0 && Im >= 0 fi = fi + 180; end Выкладываю результат учитывая это (но тут кажется совсе ничего не понятно)
Сообщение отредактировал Alexey_pashinov - May 14 2015, 08:36
Эскизы прикрепленных изображений
|
|
|
|
|
May 14 2015, 13:05
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Когда строится ачх то значениям амлитуд присваивается номер, зная номер можно вычислить как раз и частоту, по формуле f = m*(fs/N) (N -отчеты бпф, m как раз и есть номер бина). Просто, например, Лайонс дает этому определение "бин", поэтому я как то привык его использовать.
|
|
|
|
|
May 14 2015, 13:56
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Вы правы, я имел ввиду амплитудный спектр. Сейчас есть предположение что считается все верно и проблема в том что ищу разницу между не теми каналами (видимо распиновку надо проверять, походу перепутана нумерация каналов), потому что высчитав фазу между независящими каналами, я получил именно ту фазу которую я вижу на осциллографе, к тому же фаза правильно меняет знак в зависимости от направления движения (вряд ли это совпадение). Завтра буду перепроверять это дело и отпишусь о результатах.
Мои предположения оказались верны, в общем данным методом фаза расчитывается верно, спасибо за ответы. Полагаю это хорошо, что таким образом создал себе проблему, зато теперь с пониманием разобрался с фазой, а не просто воспользовался формулой)
Сообщение отредактировал Alexey_pashinov - May 15 2015, 10:48
|
|
|
|
|
May 21 2015, 09:08
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 6-03-14
Из: Зеленоград
Пользователь №: 80 823

|
Мне нужна именно разность фаз между двумя каналами, спасибо за подсказку, почитаю об этом методе.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|