Является ли бесполезным повышение частоты дискретизации до перекрестной корреляции?


12

Рассмотрим простой случай, когда два сигнала от двух разных датчиков взаимно коррелированы, а задержка прихода по времени рассчитывается по абсциссе пика их функции взаимной корреляции.

Теперь давайте далее предположим, что из-за ограничений размерности обеих антенн и ограничений на максимально возможную частоту дискретизации максимально возможная задержка составляет , что соответствует 10 выборкам.D

Проблема:

Из-за этих ограничений ваша вычисленная задержка может отличаться от любого целочисленного значения от 0 до 10 выборок, то есть: . Это проблематично, потому что то, что я действительно хочу, это дискриминация с частичной задержкой задержки между двумя сигналами, падающими на мои антенны, и изменение размеров или частоты дискретизации не вариант.0D10

Некоторые мысли:

  • Естественно, первое, что я думаю о данном случае, - это повышение дискретизации сигналов перед выполнением взаимной корреляции. Однако я думаю, что это как-то «обман», потому что я не добавляю никакой новой информации в систему.

  • Я не понимаю, как повышение частоты дискретизации не является «обманом» в некотором смысле. Да, мы восстанавливаем наш сигнал на основе его наблюдаемой в настоящее время информации о частоте, но как это дает представление о том, где сигнал действительно начинается между, скажем, и ? Где эта информация содержалась в исходном сигнале, который определил, что истинное начало сигнала с частичной задержкой было на самом деле при ?D = 8 D = 7,751D=7D=8D=7.751

Вопросы):

  • Это действительно «обман»?

    • Если нет, то откуда эта новая «информация»?
    • Если да, то какие другие варианты доступны для оценки времени частичной задержки?
  • Мне известно о повышении частоты результатов кросс-корреляции в попытке собрать ответы для выборки с ответами на задержку, но разве это тоже не форма «обмана»? Почему он отличается от повышающей дискретизации до взаимной корреляции?

Если на самом деле дело в том, что повышающая дискретизация не является «обманом», то зачем нам когда-либо увеличивать частоту дискретизации? (Разве более высокая частота дискретизации не всегда лучше, чем интерполяция сигнала с низкой дискретизацией?)

Тогда может показаться, что мы можем просто сэмплировать с очень низкой скоростью и интерполировать столько, сколько захотим. Разве это не сделает бесполезным увеличение частоты дискретизации в свете простой интерполяции сигнала по желанию нашего сердца? Я понимаю, что интерполяция занимает вычислительное время, а просто запуск с более высокой частотой дискретизации - нет, но разве это единственная причина?

Благодарю.


3
Я сомневаюсь, что есть какая-то разница в точности, так как объем информации в любом случае одинаков, но, безусловно, дешевле после интерполяции интерполировать только в интересующей области, чем сначала делать выборку, а затем выполнять все эти дополнительные умножения.
эндолит

@endolith Хорошие точки. Теперь мне стало понятнее, почему / как это работает, и да, в этом случае следует повысить результат.
Спейси

Ответы:


12

Это не обман, и это также не добавляет никакой новой информации. То, что вы делаете, это то же самое, что делает любой LPF с повышающей дискретизацией - добавляя нули и затем восстанавливая форму волны с уже известной информацией о частоте. Таким образом, нет новой информации, но есть более точное разрешение по времени.

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

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

Синяя линия на рисунке выше - это мои смоделированные данные взаимной корреляции (хотя это может быть любой результат, а не просто взаимная корреляция). Это то, что я называю «сбалансированным» пиком, потому что соседи симметричны. Как и следовало ожидать, результирующая квадратичная интерполяция (красная линия) показывает, что истинный пик равен нулю.

Изображение ниже, с другой стороны, показывает несбалансированный пик. Обратите внимание, что в результате ничего не изменилось, за исключением значений двух ближайших соседей. Это заставляет интерполятор, однако, сдвигать свою оценку дробного пика. введите описание изображения здесь

Отличное преимущество этих методов (полиномиальная интерполяция и повышающая дискретизация) заключается в том, что они также дают вам оценку истинного пикового значения, хотя нас обычно больше интересует местоположение.

Если на самом деле дело в том, что повышающая дискретизация не является «обманом», то зачем нам когда-либо увеличивать частоту дискретизации?

Чтобы удовлетворить критерий Найквиста.

Разве более высокая частота дискретизации не всегда лучше, чем интерполяция сигнала с низкой дискретизацией?

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


1
@ Джим, я знаю о Критерии Найквиста. :-) То, что я имел в виду, было в контексте увеличения , не лучше ли было бы с самого начала иметь более высокую частоту дискретизации, чтобы не пришлось повышать частоту, и, как я слышал, это правда. Кажется, что когда Nyquist будет удовлетворен, вся информация, которую вы когда-либо получите, «уже есть», и повышение уровня до некоторого уровня даст вам любое временное разрешение, которое вы хотите. В этом смысле это делает его открытым? Чем выше вы можете позволить себе опробовать, тем лучше? Fs
Спейси

1
@ Мохаммед Да и нет. Шум - либо от самих результатов, либо от шума квантования - в конечном итоге сделает бессмысленным увеличение временного разрешения. До этого момента, тем не менее, повышение частоты дискретизации должно повысить точность оценки.
Джим Клэй

1
примечания и примеры кода для квадратичной / параболической интерполяции: gist.github.com/255291#file_parabolic.md и некоторых альтернативных методов интерполяции: dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
эндолиты

2
@JimClay Есть шанс спать на нем. Теперь ясно - информация всегда там - она ​​просто закодирована в отношениях между образцами, так сказать. И это то, что поли-фитинг на самом деле использует в своей интерполяции. А поскольку сигнал ограничен по полосе (т. Е. Может изменяться только так быстро за промежуток времени), существует только так много способов, которыми он может существовать между выборками.
Спейси

8

Любой полосовой сигнал может быть интерполирован. Дополнительная информация «между выборками» содержится в смежных выборках плюс тот факт, что сигнал был ограничен полосой частот перед выборкой (что имеет тенденцию распространять информацию среди соседних выборок). Если два сигнала ограничены полосой пропускания, то это будет взаимная корреляция, поэтому взаимная корреляция также может быть интерполирована. Повышение частоты дискретизации - это просто еще одна форма интерполяции, очень точная форма интерполяции для сигналов с ограниченной полосой частот; но вы также можете использовать интерполяцию Синка (обе из которых могут быть более точными, чем квадратичная или параболическая интерполяция).

Интерполяция может показать пик между выборками. Таким образом, возможно, не бесполезно.

Если у вас есть сигнал, содержащий более широкий спектр, то он может содержать больше информации. Выборка с более высокой скоростью, таким образом, даст больше информации, но только до чуть ниже половины предельной частоты новой полосы, и только если сигнал содержал фактическое полезное содержание спектральной частоты выше старого предела полосы, и если теперь вы можете получить эту дополнительную спектр с использованием нового более широкополосного процесса или фильтра, ограничивающего полосу, вместо старого с более потерями. Выборка данных на гораздо более высокой частоте сигнала, который уже был ограничен полосой частот до гораздо более низкой частоты ниже Fs / 2, будет только покупать интерполяцию, а не информационный контент.

Если дискретизация квантуется, то выборка с более высокой скоростью может принести вам меньшую часть дополнительной информации LSB из-за сглаживания или формирования шума ошибки квантования. Но это зависит от отношения сигнал / шум и точности сэмплера и точного процесса квантования, используемого при сэмплировании.

Если два сигнала должным образом не ограничены по полосе частот до выборки и взаимной корреляции, то это может привести не только к повышению частоты дискретизации или интерполяции, но и к исходной неинтерполированной взаимной корреляции.


1
Спасибо hotpaw2. Поэтому правильно сказать, что на самом деле не имеет значения, повышаете ли вы оба сигнала, а затем коррелируете или коррелируете, а затем повышаете результат? Из-за ограничения полосы, два метода должны дать вам одинаковые результаты?
Спейси

@ Мохаммед: Я думаю, что в любом случае она содержит ту же информацию, но поскольку интерполяция не идеальна, результаты будут немного отличаться в зависимости от реализации.
эндолит

3

Я думаю, что лучший ответ, который я могу вам дать: у вас есть все средства, чтобы выяснить это самостоятельно. Построить пример «задом наперед». Используя Matlab, начните с двух сигналов, отобранных с очень маленькими периодами дискретизации (так, чтобы они были почти непрерывными сигналами). Вычислите взаимную корреляцию и найдите пик (если это то, что вы хотите), который вы сможете сделать с высокой точностью. Затем уменьшите оба сигнала и повторите процесс. Сравните расположение и высоту второго пика с первым. Я уверен, что второй будет хуже. Улучшение от второго к первому - это то, что вы получаете, если вы повышаете выборку перед взаимной корреляцией.

Для правильной выборки оба сигнала должны быть ограничены по полосе, и вам необходимо знать эти полосы пропускания. «Новая» информация, которую вы упоминаете в своем вопросе, поступает из соседних отсчетов и того факта, что сигналы имеют ограниченную полосу частот.


Спасибо Telaclavo. Одна вещь, которая на самом деле не ясна для меня, это терминология «ограниченного диапазона». Я знаю, что такое средства, но я не понимаю, почему это упоминается здесь. ЛЮБАЯ система, за исключением, возможно, шума «ограниченного диапазона», так почему он упоминается снова и снова в этом смысле?
Спейси

3

Чтобы добавить немного к предыдущим ответам, вы можете получить эквивалент повышенной кросс-корреляции с ограничением полосы частот, сделав вашу корреляционную переменную нецелой.

Следующий (python) код вычисляет , где τ

τ=argmaxτn=0N1f(n)g(n+τ)

То есть он находит максимум взаимной корреляции.

Входные переменные aи bописания и для и оба предполагаются ограниченными по полосе и периодическими с периодом (сдвиг реализован в дискретной области Фурье). находится в диапазоне .f(n)g(n)n={0,1,...,N1}Nτ[N+1,N1]

Намерение состоит в том, чтобы показать, как может выполняться взаимная корреляция для нецелого числа , которое определяется замыканием . При этом используется массив, который описывает вращение комплексного вектора на каждой дискретной частоте, соответствующей сдвигу во времени . затем масштабирует это для каждой смены. Должно быть очевидно, что для поддержания сигнала в реальном времени повороты отрицательных частот всего в раз превышают повороты положительных частот (для соответствующих пар частот).τcorrelate_pointomegaτ=1τ1

Одна тонкость заключается в том, как вы относитесь к сэмплу (частоте Найквиста), поскольку он распределяется между положительной и отрицательной полосами. Решение, используемое здесь, состоит в том, чтобы интерполировать между вектором положительного вращения и вектором отрицательного вращения (которые являются отражениями на действительной оси), то есть проецировать либо вектор единичного вращения на действительную ось, что является функцией cos ( потому что значение, соответствующее частоте Найквиста). Очевидно, что это значение должно быть реальным, чтобы поддерживать сигнал в реальном времени.N2piomega

Вы можете использовать это для вычисления взаимной корреляции для любого произвольно точного значения . Просто вызовите замыкание (которое может быть возвращено как вызываемое) с любым значением вам нравится.ττ

import numpy
from numpy import fft
from scipy import optimize

def arg_max_corr(a, b):

    if len(a.shape) > 1:
        raise ValueError('Needs a 1-dimensional array.')

    length = len(a)
    if not length % 2 == 0:
        raise ValueError('Needs an even length array.')

    if not a.shape == b.shape:
        raise ValueError('The 2 arrays need to be the same shape')

    # Start by finding the coarse discretised arg_max
    coarse_max = numpy.argmax(numpy.correlate(a, b, mode='full')) - length+1

    omega = numpy.zeros(length)
    omega[0:length/2] = (2*numpy.pi*numpy.arange(length/2))/length
    omega[length/2+1:] = (2*numpy.pi*
            (numpy.arange(length/2+1, length)-length))/length

    fft_a = fft.fft(a)

    def correlate_point(tau):
        rotate_vec = numpy.exp(1j*tau*omega)
        rotate_vec[length/2] = numpy.cos(numpy.pi*tau)

        return numpy.sum((fft.ifft(fft_a*rotate_vec)).real*b)

    start_arg, end_arg = (float(coarse_max)-1, float(coarse_max)+1)

    max_arg = optimize.fminbound(lambda tau: -correlate_point(tau), 
            start_arg, end_arg)

    return max_arg

1
Мне нужно подумать, правильный ли твой вопрос (а сейчас у меня нет времени). Я думаю об этом так: вы сдвигаете групповую задержку вашего сигнала, что вы можете сделать на любую сумму, какую захотите. Это в точности эквивалентно круговой свертке с функцией sinc во временной области, со смещением sinc на (но все же сэмплируется в тех же местах, что и исходный сигнал). Стоит отметить, что с целым числом все пересечения нуля sinc совпадают со временем выборки, за исключением at (где это ), поэтому сигнал смещается тривиально. τττ1
Генри Гомерсалл

О, ваш вопрос исчез! Тем не менее, я оставлю ответ там.
Генри Гомерсалл

Спасибо Генри - (Извините за удаление моего вопроса, я пытался сделать его более ясным! :-)). (Я немного медленен в освоении Python, но работаю в нем). В любом случае, да, я думаю, что понимаю ваш метод - и я думаю, что суть его заключается в том, что берется интерполяция фазового отклика результата взаимной корреляции, и соответствующее значение расшифровывается оттуда. Может быть, мне нужно больше времени, чтобы переварить, но, тем не менее, интересно. Где / Почему вы использовали его вместо интерполяции во временной области? Контекст может помочь. Благодарность! tau
Спейси

Это было наивное стремление к скорости, хотя я рад сообщить, что существует более быстрый алгоритм интерполяции во временной области. Мое обоснование заключается в том, что для выполнения нецелого временного сдвига во временной области вам потребуется умножения для выполнения свертки по сравнению с с использованием метода Фурье (или около того ). Затем корреляция берется во временной области в обоих случаях. Если вы попробуете сделать повторную выборку, мне это покажется очень медленным (и я бы сделал это и в области Фурье!). N2N(logN+1)
Генри Гомерсалл

Кроме того, я считаю, что мышление в области Фурье гораздо проще. Но, возможно, это не нормально!
Генри Гомерсалл

2

Существует интуитивное доказательство того, что повышающая дискретизация до взаимной корреляции эквивалентна выполнению этого впоследствии:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.