最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Unwrap

信号位相のアンラップ

ライブラリ

信号処理

dspsigops

説明

Unwrap ブロックは、各チャネル要素に適切な 2π の倍数を加算または減算することで、入力の各チャネルをアンラップします。入力はベクトルまたは行列にすることができますが、ラジアン位相のエントリがなければなりません。このブロックでは、[Tolerance] パラメーターの設定よりも大きな位相の不連続が認識されます。位相のアンラップに関する詳細については、位相のアンラップの定義を参照してください。

このブロックでは入力のサイズと次元が保持され、出力端子のレートは入力端子のレートと等しくなります。

アンラップ方法

Unwrap ブロックでは、連続する各チャネル要素に 2πk を加算し、各 "位相ジャンプ"k を更新することで、入力行列または入力ベクトルの各チャネルをアンラップします。位相ジャンプは、2 つの隣接する位相値のエントリの差分が [Tolerance] パラメーターの値を超えた場合に発生します。

次のコードは、ブロックが特定の入力チャネル u のデータをアンラップする方法を示しています。

k=0; % initialize k to 0
i=1; % initialize the counter to 1
alpha=pi; % set alpha to the desired Tolerance. In this case, pi

for i = 1:(size(u)-1)
    yout(i,:)=u(i)+(2*pi*k); % add 2*pi*k to ui
    if((abs(u(i+1)-u(i)))>(abs(alpha)))  %if diff is greater than alpha, increment or decrement k
               
        if u(i+1)<u(i)   % if the phase jump is negative, increment k
            k=k+1;
        else             % if the phase jump is positive, decrement k
            k=k-1;
        end
    end
end
yout((i+1),:)=u(i+1)+(2*pi*k); % add 2*pi*k to the last element of the input

フレームベースの処理

フレームベース処理を実行するようにブロックを構成した場合、ブロックは 2 つの異なるアンラップ モードをサポートします。どちらのモードでも、ブロックは各入力チャネルの要素に 2πk を加算し、位相の不連続ごとに k を更新します。2 つのモード間の差異は、ブロックが初期位相値 (k) を 0 にリセットする頻度です。フレームの境界を越えてデータをアンラップすること (既定の設定)、あるいは新しい入力フレームを受信するたびに初期位相値をリセットすることで入力フレーム内でのみアンラップすることを選択できます。

フレームの境界を越えたアンラップ

既定のモードでは、ブロックは入力フレーム間の境界を無視し、初期位相値を 0 にリセットすることなく各チャネル内のデータをアンラップし続けます。このモードを指定するには、[Do not unwrap phase discontinuities between successive frames] チェック ボックスをオフにします。次の図は、このモードでブロックがデータをアンラップする方法を示しています。

フレーム内でのアンラップ

[Do not unwrap phase discontinuities between successive frames] チェック ボックスをオンにすると、ブロックは入力データの各フレームを個別に扱います。このモードでは、ブロックは、新しい入力フレームが受信されるたびに初期位相値を 0 にリセットします。次の図は、このモードでブロックがデータをアンラップする方法を示しています。

サンプルベースの処理

サンプル ベースの処理を実行するようにブロックを構成すると、ブロックは入力の各要素を個別のチャネルとして扱います。ブロックは入力の各チャネル内のデータをアンラップし、新しい入力が受信されるたびに初期位相を 0 にリセットしません。次の図は、サンプル ベース処理の実行時にブロックがデータをアンラップする方法を示しています。

位相のアンラップの定義

多くの場合、信号の位相を計算するアルゴリズムは、–π と π の間の位相を出力するだけです。たとえば、こうしたアルゴリズムは sin(2π + 3) の位相を 3 と計算します。これは、sin(3) = sin(2π + 3) であり、実際の位相 2π + 3–ππ の間ではないためです。こうしたアルゴリズムは、sin(–4π + 3) および sin(16π + 3) の位相も 3 と計算します。

位相のアンラップまたはアンラップは、多くの場合、信号の元の位相を再構成するために使用されるプロセスです。アンラップ アルゴリズムでは、次の図で示しているように、適切な の倍数を各位相の入力に追加して元の位相値を復元します。このブロックによって使用されるアンラップ アルゴリズムの詳細については、アンラップ方法を参照してください。

次の図は、位相のアンラップの概念を示しています。

パラメーター

Tolerance

ブロックが真の位相の不連続として認識するジャンプ サイズ。適正な信号機能の変更を避けるために、既定値は (小さな値ではなく) π に設定されています。このブロックの感度を高めるには、[Tolerance] を π よりわずかに小さい値に設定します。

Input processing

ブロックで入力を処理する方法を指定します。これらのパラメーターは、以下のいずれかのオプションに設定することができます。

  • [Columns as channels (frame based)] (既定の設定) — このオプションを選択すると、ブロックは入力の各列を別々のチャネルとして扱います。

  • [Elements as channels (sample based)] — このオプションを選択する場合、ブロックは入力の各要素を別々のチャネルとして扱います。

Do not unwrap phase discontinuities between successive frames

このチェック ボックスをオフにすると、ブロックは入力フレーム間の境界を無視し、新しい入力が受信されるたびに初期位相値を 0 にリセットしません。このモードでは、ブロックは入力の各列のデータを継続的にアンラップします。このチェック ボックスをオンにすると、ブロックは入力データの各フレームを別々に扱い、新しい各入力フレームの初期位相値をリセットします。詳細は、フレームベースの処理の節を参照してください。

このパラメーターは、フレームベース処理を実行するようにブロックを構成している場合にのみ使用できます。サンプル ベース処理モードでは、ブロックは新しい各入力の初期位相値を 0 にリセットしません。詳細は、サンプルベースの処理を参照してください。

サポートされているデータ型

  • 倍精度浮動小数点

  • 単精度浮動小数点

参考

unwrapMATLAB

拡張機能

R2006a より前に導入