|
Определение скорости роста частоты, и экстраполяция |
|
|
|
 |
Ответов
(1 - 6)
|
Jan 5 2012, 18:16
|

Местный
  
Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470

|
Цитата Почему фазу измеряете, а не частоту? df=-2Vr/Lambda0, насколько помню. Потомучто требуемая точность при малом расстоянии меньше длины волны. Цитата Если времени нет, то поможет ФАПЧ (схема Костаса) Времени нет. Нужно выдавать информацию на ходу с частотой 2кГц и с известным отставанием по времени от фактического момента измерения (задержкой). Задержку нужно минимизировать, но она не должна быть больше 20мс. Буфер - это пожалуйста. 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Существуют ли оптимальные алгоритмы для такого скользящего по буферу БПФ? Про петлю Костаса начал учить матчасть. Спасибо. Будут вопросы - задам.
|
|
|
|
|
Jan 7 2012, 14:43
|
Местный
  
Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531

|
Цитата(Waso @ Jan 5 2012, 21:16)  Буфер - это пожалуйста. 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Существуют ли оптимальные алгоритмы для такого скользящего по буферу БПФ? Если шаг скольжения мелкий, как у вас - 0.5мс, то вместо БПФ возьмите обычное ДПФ, оно хорошо оптимизируется под скольжение. (в гугле - sliding dft). Я делал скользящий вариант ДПФ по приходу одного сэмпла, что естественно быстрее чем любое скользящее БПФ. Могу поискать ссылку на метод, объяснение на пальцах: каждая палка в спектре получается перемножением сигнала на синусоиду определённой частоты. То есть i-тая амплитуда это просто сумма A[i]=SUM( Sample[j]*Cos(i,j) ) по всем сэмплам j. По приходу сэмпла мы можем прибавить к палке число A[i]:=A[i]+Sample[Now]*Cos(i,j) и вычесть самое "старое" слагаемое A[i]:=A[i]+Sample[Now-128]*Cos(i,j). Так как старое произведение можно хранить в памяти, то на каждый сэмпл для каждой частоты только одно умножение по COS-компоненте. По второй компоненте так же. А дальше как для фурье - корни из сумм квадратов. Если мелкий шаг не нужен, то можно целыми блоками. Будет быстро, но при росте размера блока алгоритм скользящего ДПФ станет в итоге медленнее, чем скользящего БПФ.
|
|
|
|
|
Jan 11 2012, 13:02
|

Местный
  
Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470

|
tmtlib, благодарю за подсказку!
Stepanov. Ознакомился в общих чертах с Костасом, а заодно и с ФАПЧ 3-го порядка, которые позволяют следить за убеганием частоты. Понятно, что в итоге можно по известной частоте определять скорость и расстояние, и помехи можно задавить. Непонятно только что делать с фазой на малых расстояниях, если частота будет постоянно подстраиваться. С переводом фазы в метры надо будет както хитрить.
И еще гложут сомнения, что можно будет подобрать такие параметры ФАПЧ, чтобы он успевал перестроиться и не возбуждался, если цель будет удаляться от датчика с приличным ускорением (1 - 2 g). Максимальная скорость разлетания - 100 м/с (это в конце пути, когда уже быстрее всего) - пока не перевел в герцы чтоб найти полосу для ФАПЧ...
|
|
|
|
|
Jan 13 2012, 06:50
|
Местный
  
Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531

|
Цитата 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Ещё как вариант - можно сделать многомикропроцессорную плату, засинхронизировав их работу с запаздыванием 20мс / N чипов. Например два чипа: первое БПФ закончилось, второй чип выдаст спектр через 10мс. Если четыре чипа - 5мс и т.д. Либо может поставить какой специализированный БПФ-чип, который из сигнала сразу делает спектр (Правда сколько они стоят не знаю) Я как и вы пытался мерять фазу, делал это скользящим ДПФ. Основная проблема - без перемножение на сглаживающее окно фаза получалась не очень. А если умножать на окно, то оптимизация сходит на нет, так как старые значения по второму разу не использовать. С БПФ есть ещё такой способ. К примеру, я брал 1024-точечное БПФ. Экспериментально подобрал оптимальную форму сглаживающего окна, в итоге ненулевых коэффициентов осталось 64, а по краям - одни нули, по научному видимо STFT окно. Для оптимизации этого дела цикл БПФ можно развернуть в линейную программу. Хотя бы первую ступень преобразования. Основной выигрыш на первой ступени перемножения бабочек: вместо 1024 входных отсчёта используем только 64.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|