Чи марний вибірку до перехресної кореляції марний?


12

Розглянемо простий випадок, коли два сигнали від двох різних датчиків перехресно співвідносяться, а час затримки приходу обчислюється з абсиси піку їх перехресної кореляційної функції.

Тепер давайте припустимо, що через обмеження розмірності обох антен та обмеження максимально можливої ​​швидкості вибірки можлива максимальна затримка D , що відповідає 10 зразкам.

Проблема:

Через ці обмеження ваша обчислена затримка може змінюватися від будь-якого цілого значення між 0 і 10 зразками, тобто: 0D10 . Це проблематично, тому що я дійсно хочу - це роздільна дискримінація затримки затримки між двома сигналами, що надходять на мої антени, та зміна розмірів або частоти вибірки не є можливим.

Деякі думки:

  • Природно, перше, що я думаю про цей випадок, - це перебір сигналів перед тим, як здійснити перехресну кореляцію. Однак я думаю, що це якось "обман", тому що я не дуже додаю нової інформації до системи.

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

Питання:

  • Це справді "обман"?

    • Якщо ні, то звідки береться ця нова «інформація»?
    • Якщо так, то які інші варіанти доступні для оцінки часу часткової затримки?
  • Мені відомо, що підсумовує результат перехресної кореляції, намагаючись отримати відповіді на вибірку затримки, але це теж не є формою "обману"? Чому вона відрізняється від випереджальної вибірки до перехресної кореляції?

Якщо насправді так відбувається те, що збір даних не є «обманом», то навіщо нам взагалі потрібно збільшувати частоту вибірки? (Хіба не має більш високий коефіцієнт вибірки, завжди кращий сенс, ніж інтерполяція сигналу з низькою вибіркою?)

Тоді здавалося б, що ми могли просто зробити вибірку з дуже низькою швидкістю та інтерполювати стільки, скільки нам хочеться. Хіба це не зробить збільшення частоти вибірки «марною» у світлі простої інтерполяції сигналу на наше бажання серця? Я усвідомлюю, що інтерполяція займає обчислювальний час і просто починати з більш високої вибіркової швидкості не було б, але це тоді єдина причина?

Дякую.


3
Я сумніваюся, що є різниця в точності, оскільки кількість інформації однаковий і в іншому випадку, але, безумовно, дешевше інтерполювати після перехресної кореляції лише в цікавій області, ніж спочатку проаналізувати все, а потім виконати всі ці додаткові множення.
ендоліт

@endolith Хороші бали. Мені зараз зрозуміліше, чому / як це працює, і так, підняття результату було б способом пройти в цьому випадку.
Спейсі

Відповіді:


12

Це не обман, а також не додавання нової інформації. Те, що ви робите, - це те саме, що робить будь-який підвищуючий рівень LPF - додаючи нулі та потім реконструюючи форму хвилі з уже відомою інформацією про частоту. Таким чином, нової інформації немає, але все ж є більш точне врегулювання часу.

Підвищуючи результат, подібне - немає нової інформації, але більш точна роздільна здатність. Ви можете зробити щось дуже схоже через квадратичну інтерполяцію .

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

Синя лінія на малюнку вище - це мої імітовані перехресні кореляційні дані (хоча це може бути будь-який результат, а не лише перехресна кореляція). Це я називаю "врівноваженим" піком, оскільки сусіди симетричні. Як ви могли очікувати, результуюча квадратична інтерполяція (червона лінія) вказує на те, що справжній пік дорівнює нулю.

Зображення нижче, з іншого боку, показує незбалансований пік. Зверніть увагу, що в результаті нічого не змінилося, крім значень двох найближчих сусідів. Це змушує інтерполятор змістити свою оцінку дробу. введіть тут опис зображення

Прекрасна побічна перевага цих методів (поліпомічна інтерполяція та підсилення) полягає в тому, що вона також дає оцінку справжнього пікового значення, хоча нас зазвичай більше цікавить місце розташування.

Якщо насправді так відбувається те, що збір даних не є «обманом», то навіщо нам взагалі потрібно збільшувати частоту вибірки?

Для задоволення критерію Найкіста.

Хіба не більша швидкість вибірки в сенсі завжди краща, ніж інтерполяція сигналу з низькою вибіркою?

Ні. З теоретичної точки зору, якщо критерій Найкіста задовольняється, не має значення, який показник вибірки. З практичної точки зору, ви, як правило, з такою низькою швидкістю вибірки, наскільки ви можете піти, щоб зменшити вимоги до зберігання та обчислювального навантаження, що, в свою чергу, зменшує необхідні ресурси та енергоспоживання.


1
Fs

1
@Mohammad Так і ні. Шум - або від самих результатів, або від шуму квантування - врешті зробить збільшення роздільної здатності часу безглуздою. До цього моменту, так, так, збільшення рівня збільшить більше, повинно підвищити точність оцінки.
Джим Клей

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

2
@JimClay Є шанс спати на ньому. Зрозуміло, що зараз - інформація завжди є - її щойно закодована у взаємозв'язку між вибірками. І це те, що фактично використовує поліфітінг у своїй інтерполяції. А оскільки сигнал обмежений діапазоном (тобто може змінюватись так швидко лише за проміжок часу), існує лише стільки способів, коли він може існувати між зразками.
Спейсі

8

Будь-який смуговий сигнал може бути інтерпольований. Додаткова інформація "між зразками" міститься в сусідніх зразках плюс той факт, що сигнал був обмежений до вибірки (що має тенденцію до поширення інформації серед сусідніх зразків). Якщо два сигнали обмежені смугою, то перехресна кореляція буде такою, тож перехресна кореляція може бути інтерпольована також. Підвищення розміру - це ще одна форма інтерполяції, дуже точна форма інтерполяції для смугових сигналів; але ви можете також використовувати інтерполяцію Sinc (і те й інше може бути більш точним, ніж квадратична або параболічна інтерполяція).

Інтерполяція може виявити пік між зразками. Таким чином, можливо, не марним.

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

Якщо вибірки є квантованими, то вибірка з більш високою швидкістю може придбати вам частину LSB додаткової інформації, що обумовлено змиванням або формуванням шуму помилки квантування. Але це залежить від співвідношення S / N та точності пробовідбірника та точного процесу квантування, що використовується для відбору проб.

Якщо два сигнали не є належним чином обмеженими до вибірки та перехресної кореляції, то не тільки може збільшити вибірку чи інтерполяцію придбати вам сміттєвий результат, але таким може бути і оригінальний неінтерпольований перехресний кореляційний зв’язок.


1
Дякую hotpaw2. Тож правильно сказати, що це насправді не має значення, якщо ви обираєте обидва сигнали, а потім співвідносите, або співвідносите, а потім поглибите результат? Через обмеження смуги, два методи повинні дати вам однакові результати?
Спейсі

@Mohammad: Я думаю, що вона містить ту саму інформацію в будь-якому випадку, але оскільки інтерполяція не є досконалою, результати будуть дещо різними залежно від реалізації.
ендоліт

3

Я думаю, що найкраща відповідь, яку я можу тобі дати, - це ти маєш усі засоби, щоб це дізнатися сам. Побудуйте приклад «назад». Використовуючи Matlab, почніть з двох сигналів, відібраних з дуже невеликими періодами вибірки (так що вони є майже сигналами безперервного часу). Обчисліть перехресну кореляцію та знайдіть пік (якщо це саме ви хочете), який ви зможете зробити з високою точністю. Потім проаналізуйте обидва сигнали та повторіть процес. Порівняйте розташування та висоту другого піку з першим. Я впевнений, що другий буде гіршим. Удосконалення від другого до першого - це те, що ви отримуєте, якщо ви переглядаєте вибірку перед перехресним співвідношенням.

Щоб правильно відібрати вибірку, обидва сигнали повинні бути обмежені смугою, і вам потрібно знати ці пропускну здатність. "Нова" інформація, яку ви згадуєте у своєму запитанні, походить із сусідніх зразків, а також те, що сигнали обмежені смугою.


Дякую Телаклаво. Одне, що мені насправді незрозуміле, - це термінологія "обмеженості групи". Я знаю, що означає, але я не розумію, чому це тут згадується. БУДЬ-яка система, за винятком можливого шуму, є «обмеженою смугою», тож чому її згадують знову і знову в цьому сенсі?
Спейсі

3

Щоб додати трохи до попередніх відповідей, ви можете отримати еквівалент перехресної кореляції з обмеженим діапазоном, що обмежується діапазоном, зробивши змінну кореляції не цілим числом.

τ

τ=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 складаються із зразками часу, за винятком у (де це ), через що сигнал тривіально зміщується. τττ1
Генрі Гомерсалл

О, ваше питання зникло! Все-таки я залишу відповідь там.
Генрі Гомерсалл

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

Це було наївне прагнення до швидкості, хоча я радий сказати, що існує швидший алгоритм інтерполяції часової області. Моє обгрунтування полягає в тому, що для виконання не цілого зсуву часу у часовій області вам знадобиться множення для виконання згортки порівняно з за допомогою методу Фур'є (або після цього ). Потім кореляція приймається у часовій області в обох випадках. Якщо ви спробуєте зробити повторний вибір, це вважає мене дуже повільною справою (і я б це зробив і в домені Фур'є!). N2N(logN+1)
Генрі Гомерсалл

Крім того, я вважаю, що мислення в області Фур'є насправді набагато простіше. Але, можливо, це не нормально!
Генрі Гомерсалл

2

Існує інтуїтивно зрозумілий доказ того, що перебіг вибору перед перехресною кореляцією еквівалентний виконанню після цього:

Перехресна кореляція - це згортання з іншим сигналом, оберненим часом. Зміна часу не впливає на пропускну здатність. Світло - це множення в частотній області, що також не збільшує пропускну здатність. Якщо вихідні сигнали належним чином обмежені діапазоном до половини частоти дискретизації, то таким буде і результат перехресної кореляції. Не псевдонім не вводиться, щоб зруйнувати результат. Інтерполяція згодом економить роботу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.