相互相関の前のアップサンプリングは役に立ちませんか?


12

2つの異なるセンサーからの2つの信号が相互相関し、到着時間遅延が相互相関関数のピークの横座標から計算される単純なケースを考えます。

さらに、両方のアンテナの次元の制約と、可能な最大サンプリングレートの制約により、可能な最大遅延は、10サンプルに対応するであると仮定します。D

問題:

これらの制約のため、計算された遅延は0〜10サンプルの整数値、つまりから変動する可能性があります。私が本当に欲しいのは、アンテナに衝突する2つの信号間の遅延の分数遅延識別であり、次元やサンプリングレートの変更はオプションではないためです。0D10

いくつかの考え:

  • 当然、この場合に最初に考えるのは、相互相関を実行する前に信号をアップサンプリングすることです。しかし、私はシステムに新しい情報を実際に追加していないので、これは何らかの形で「ごまかし」だと思います。

  • ある意味で、アップサンプリングがいかに「ごまかし」ではないのか理解できません。はい、現在観測されている周波数情報に基づいて信号を再構築していますが、これにより、たとえばと間で信号が本当に開始された場所を知ることができますか?この情報は、信号の真の非整数遅延開始が実際にであると判断した元の信号のどこに含まれていましたか?D = 8 D = 7.751D=7D=8D=7.751

質問):

  • これは本当に「不正行為」ですか?

    • そうでない場合、この新しい「情報」はどこから来るのでしょうか?
    • はいの場合、非整数遅延時間を推定するために他にどのようなオプションが利用可能ですか?
  • 遅延に対するサブサンプルの回答を集めるために、相互相関の結果をアップサンプリングすることは承知していますが、これも「不正」の形ではありませんか?相互相関前のアップサンプリングと異なるのはなぜですか?

実際にアップサンプリングが「不正」ではない場合、なぜサンプリングレートを上げる必要があるのでしょうか?(低いサンプリング信号を補間するよりも、ある意味でサンプリングレートが高い方が常に良いのではないでしょうか?)

その場合、非常に低いレートでサンプリングし、必要なだけ補間することができます。信号を単純に私たちの心の欲求に補間するという観点から、これはサンプルレートを「無駄」にしないでしょうか?補間には計算時間がかかり、単純に高いサンプルレートで開始するのはそうではないことを理解していますが、それが唯一の理由ですか?

ありがとう。


3
情報の量はどちらも同じであるため、精度に違いがあるとは思いませんが、最初にすべてをアップサンプリングしてからすべての余分な乗算を行うよりも、関心のある領域でのみ相互相関のに補間する方が確かに安価です。
エンドリス

@endolith良い点。私はこれがなぜ/どのように機能するかについて明確になりました。はい、結果をアップサンプリングすることがこの場合の道です。
スペイシー

回答:


12

不正行為ではなく、新しい情報も追加されていません。あなたがしていることは、アップサンプリングLPFがしていることと同じです-ゼロを追加し、既知の周波数情報で波形を再構築します。したがって、新しい情報はありませんが、さらに細かい時間分解能があります。

結果のアップサンプリングも同様です。新しい情報はありませんが、より細かい時間分解能です。二次補間を介して非常に似たようなことができます。

これらすべての方法(アップサンプリングと多項式補間)は、分数ピークがピーク自体とその近傍の両方からどこにあるかに関する情報を取得します。簡単な絵の例。 バランスの取れたピーク

上の図の青い線は、シミュレートされた相互相関データです(相互相関だけでなく、任意の結果になる可能性があります)。隣人は対称的であるため、これを「バランスの取れた」ピークと呼びます。ご想像のとおり、結果の2次補間(赤い線)は、真のピークがゼロであることを示しています。

一方、下の画像は不均衡なピークを示しています。2つの最近傍の値を除いて、結果は何も変更されていないことに注意してください。ただし、これにより、補間器はフラクショナルピークの推定値をシフトします。 ここに画像の説明を入力してください

これらの方法(多項式補間とアップサンプリング)のすばらしい側面の利点は、通常は場所に関心があるものの、真のピーク値の推定値も提供することです。

実際にアップサンプリングが「不正」ではない場合、なぜサンプリングレートを上げる必要があるのでしょうか?

ナイキスト基準を満たすため。

低いサンプリング信号を補間するよりも、ある意味で高いサンプリングレートの方が常に良いとは限りませんか?

いいえ。理論的な観点から、ナイキスト基準が満たされている限り、サンプルレートが何であるかは関係ありません。実用的な観点からは、一般的に、ストレージ要件と計算負荷を削減するために、できるだけ少ないサンプリングレートを使用して、必要なリソースと消費電力を削減します。


1
@ジム、私はナイキスト基準を知っています。:-)私が意図したのは、を増やすという文脈で、アップサンプリングする必要がないように、より高いサンプルレートから始めることは良くないでしょうか、そして私が聞いていることから、これは本当です。ナイキストが満たされると、取得しようとしているすべての情報は「既に存在」し、あるレベルまでアップサンプリングすることで、必要な時間分解能が得られます。その意味で、これはそれをオープンエンドにしますか?アップサンプリングする余裕があるほど良いですか?Fs
スペイシー

1
@Mohammadはい、いいえ。結果自体からのノイズまたは量子化ノイズのいずれかにより、最終的に時間分解能の増加は無意味になります。ただし、その時点までは、はい、より多くのアップサンプリングを行うと、推定の精度が向上するはずです。
ジム・クレイ

1
二次/放物線補間のノートやコード例:gist.github.com/255291#file_parabolic.mdといくつかの代替補間法:dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
endolith

2
@JimClayそれで寝る機会を得た。今では明らかです-情報は常にそこにあります-それはいわばサンプル間の関係でエンコードされています。そして、これは実際にポリフィッティングがその補間で使用するものです。また、信号は帯域制限されているため(つまり、タイムスパン内で非常に高速にしか変更できないため)、サンプル間に存在できる方法は非常に多くあります。
スペイシー

8

帯域制限された信号はすべて補間できます。「サンプル間」の追加情報は、隣接サンプルに加えて、サンプリング前に信号が帯域制限されたという事実に含まれています(隣接サンプル間で情報を拡散する傾向があります)。2つの信号が帯域制限されている場合、相互相関もそうであるため、相互相関も補間できます。アップサンプリングは、補間のもう1つの形式であり、帯域制限された信号の補間の非常に正確な形式です。ただし、Sinc補間も使用できます(どちらも2次補間または放物線補間よりも正確です)。

補間により、サンプル間にピークが表示される場合があります。したがって、おそらく無駄では​​ありません。

より広いスペクトルを含む信号がある場合、より多くの情報を含むことができます。したがって、より高いレートでサンプリングすると、より多くの情報が得られますが、新しい帯域制限周波数の半分以下までで、信号が古い帯域制限を超える実際の有用なスペクトル周波数成分を含んでいて、この追加の古いより損失の多いものの代わりに、新しいより広帯域の帯域制限プロセスまたはフィルターを使用してスペクトルを調整します。Fs / 2よりはるかに低い周波数に既に帯域制限されている信号のはるかに高い周波数でデータをサンプリングすると、補間のみが購入され、情報コンテンツは購入されません。

サンプリングが量子化されている場合、量子化誤差のディザリングまたはノイズシェーピングにより、より高いレートでサンプリングすると、LSBのより多くの情報の一部が購入される可能性があります。ただし、これはサンプラーのS / N比と精度、およびサンプリングで使用される正確な量子化プロセスに依存します。

サンプリングおよび相互相関の前に2つの信号が適切に帯域制限されていない場合、アップサンプリングまたは補間の両方で不要な結果が得られるだけでなく、元の補間されていない相互相関もあります。


1
hotpaw2に感謝します。だから、両方の信号をアップサンプリングしてから相関させるか、相関させてから結果をアップサンプリングしても、本当に問題ではないと言うのは正しいですか?帯域制限のため、2つの方法で同じ結果が得られますか?
スペイシー

@Mohammad:どちらの場合も同じ情報が含まれていると思いますが、補間は完全ではないため、結果は実装によってわずかに異なります。
エンドリス

3

私があなたに与えることができる最高の答えは、あなたが自分で調べるためのすべての手段を持っていると思います。「後方」の例を作成します。Matlabを使用して、非常に短いサンプリング周期でサンプリングされた2つの信号から始めます(ほぼ連続時間の信号になるように)。相互相関を計算し、ピークを見つけます(必要な場合)。これを高精度で行うことができます。次に、両方の信号をダウンサンプリングし、プロセスを繰り返します。2番目のピークの位置と高さを最初のピークと比較します。二番目はもっと悪くなると確信しています。相互相関の前にアップサンプリングすると、2番目から1番目の改善が得られます。

正しい方法でアップサンプリングするには、両方の信号を帯域制限する必要があり、それらの帯域幅を知る必要があります。質問で言及する「新しい」情報は、隣接するサンプルからのものであり、信号は帯域制限されています。


テラクラボに感謝します。私にとって本当にはっきりしないことの1つは、「帯域制限」という用語です。どういう意味かは知っていますが、なぜここで言及されているのかわかりません。おそらくノイズを除くすべてのシステムは「帯域制限」されていますが、なぜこの意味で何度も言及されているのでしょうか?
スペイシー

3

前の回答に少し追加するには、相関変数を非整数にすることで、アップサンプリングされた帯域制限相互相関に相当するものを取得できます。

τ

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

つまり、相互相関の最大値を見つけます。

abf(n)g(n)n={0,1,...,N1}Nτ[N+1,N1]

τcorrelate_pointomegaτ=1τ1

微妙な点は、どのように扱うかです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
τττ1

ああ、あなたの質問は消えました!それでも、返信はそこに残しておきます。
ヘンリーゴマーサル

tau

N2N(logN+1)

また、私はフーリエ領域での考え方が実際にはずっと簡単だと感じています。しかし、多分それは普通ではありません!
ヘンリーゴマーサル

2

相互相関前のアップサンプリングは、後で行うことと同等であるという直感的な証拠があります。

相互相関は、時間反転された他の信号との畳み込みです。時間反転は帯域幅に影響しません。畳み込みは、周波数領域での乗算であり、帯域幅も増加しません。元の信号がサンプリング周波数の半分に適切に帯域制限されている場合、相互相関の結果も同様になります。結果を台無しにするエイリアスは導入されません。その後の補間は作業を節約します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.