アプリケーションノート

アラン偏差の測定

Moku 位相計を使用したアラン偏差のガイド

更新日:2023年10月9日

Moku 位相計は、入力信号の位相、周波数、振幅を測定し、これらの量のいずれかのアラン偏差をリアルタイムで計算できます。 Mokuのモデルに応じて、搬送周波数が300 MHz までの入力信号に対して最大6 μラジアンの精度をサポートできます。 デジタル実装されたフェーズ ロック ループ アーキテクチャを使用することで、従来のロックインアンプや周波数カウンターの能力をはるかに超える優れたダイナミックレンジと精度を提供します。 このガイドでは、数学について説明し、重複変数τ推定量を使用したアラン偏差計算の例を示します。

ユーザーマニュアルをダウンロード

重複変数τ推定量を用いたアラン偏差

アラン偏差は、時間とともに変化する量の安定性の尺度であり、通常、クロックやその他の発振器の安定性を定量化するために使用されます。 偏差が定量化される量の変化率の単位があります。 たとえば、位相のアラン偏差の単位はcyc/s、振幅の単位はV/s、周波数の単位はHz/sです。 クロックの安定性を計算するために使用される場合、単位は 1 秒あたりの秒数になります。つまり、単位はありません。 また、一部の情報源は、アラン偏差の「単位のなさ」をすべての入力系列に誤って一般化しています。

定義上、アラン偏差σyは次の方程式により観測時間τの関数として計算されます。

ここで、xは、アラン偏差が計算される離散時系列です。 実際には、無限の時間をかけて期待値を計算することは不可能です。 アラン偏差の計算には、いくつかの推定器が使用されます。 Moku 位相計は、重複変数τ推定量を使用して、次のように定義されるアラン偏差を計算します。

ここで、 τ0は位相計のサンプリング周期、Nは入力時系列に対して取得されたデータポイントの数です。nは、目的のτ ≅ n τ0 を最もよく推定するサンプリング周期の整数乗数であり、xiは時系列のi番目の要素を表します。


Moku 位相計を用いたアラン偏差

この例では、Moku:Lab位相計を使用して2 MHz 信号のアラン偏差を測定しました。 信号の周波数と位相は122 Hz で10 分間測定されました。 位相のアラン偏差を表示するには、Moku ディスプレイの上部にある「位相」タブを選択し、プロット領域で「アラン偏差」を選択します。

注意:「周波数」または「振幅」タブが選択されている場合、Moku:Lab は式 (2) の入力として周波数または振幅の時系列を使用します。


Pythonの実装

関数cal_oadevは、時系列、サンプリング レート、および観測時間τの配列を入力として受け取ります。 式 (2) を使用して重複アラン偏差を計算し、nτ0σy (0 )を配列として返します。 必要なライブラリ: NumPy、math

#Import libraries
import numpy as np
import math

def cal_oadev(data,rate,tauArray):     tau0 = 1 / rate  # Calculate the sampling period
    dataLength = data.size # Calculate N
    dev = np.array([]) # Create empty array to store the output.
    actualTau = np.array([])

    for i in tauArray: n = math.floor(i / tau0) # Calculate n given a tau value.
        if n == 0:             n = 1 # Use minimal n if tau is less than the sampling period.

    currentSum = 0
 # Initialize the sum
    for j in range(0, dataLength - 2*n):
        # Accumulate the sum squared
        currentSum += (data[j+2*n] - 2*data[j+n] + data[j])**2

        # Divide by the normalization coefficient
        devAtThisTau = currentSum / (2*n**2 * tau0**2 * (dataLength - 2*n))         dev = np.append(dev, np.sqrt(devAtThisTau))         actualTau = np.append(actualTau, n*tau0)


    return actualTau, dev #Return the actual tau and overlapped Allan deviation

 


計算例

この例では、以前にMoku:Labで取得した時系列をインポートし、Python スクリプトを使用してアラン偏差を計算しました。 すべての生データとスクリプトは以下のとおりです。

生の ZIP データ スクリプトをダウンロードする

時系列は「data.xlsx」ファイルにあります。 最初の列「A」は測定された周波数 (Hz)、2番目の列「B」は測定された位相 (サイクル) です。 スクリプト「CalculateAllanDeviation.py」は Excel ファイルを読み取り、「AllanFunc.py」内のcal_oadev 関数を呼び出します。 アラン偏差は、τの関数として対数スケールでプロットされます。 Allan Deviation プロットは、Moku:Lab スクリプトと Python スクリプトの間でよく一致しました。 必要なライブラリ: NumPy、math、pandas、Matplotlib


参考文献

[1] Land, D. V., A. P. Levick, and J. W. Hand. “The use of the Allan deviation for the measurement of the noise and drift performance of microwave radiometers.” Measurement Science and Technology 18, no. 7 (2007): 1917.

[2] Allan, David W. “Statistics of atomic frequency standards.” Proceedings of the IEEE 54.2 (1966): 221-230.

[3] Howe, D.A., Allan, D.W., and Barnes, J.A. “Properties of signal sources and measurement methods.” Proceedings of the 35th Annual Symposium on Frequency Control (1981): TN-14 – TN-60.


質問やコメントがありますか?

お問い合わせ