Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

unwrap

説明

Q = unwrap(P) は、ベクトル P 内のラジアン位相角をアンラップします。連続する角度の間の跳びが π ラジアン以上の場合、unwrap は跳びが π 未満になるまで ±2π の倍数を加算することによって角度をシフトします。P が行列の場合、unwrap は列方向に演算します。P が多次元配列の場合、unwrap はサイズが 1 より大きい最初の次元に作用します。

Q = unwrap(P,tol) は、P の要素間の跳びを、既定値の π ラジアンではなく跳びのしきい値 tol と比較します。跳びのしきい値を π 未満に指定すると、unwrap は既定の跳びのしきい値 π を使用します。

Q = unwrap(P,[],dim) は、次元 dim に沿ってアンラップします。

Q = unwrap(P,tol,dim) は、次元 dim に沿って、跳びのしきい値 tol を使用してアンラップします。

すべて折りたたむ

位相角 0 ~ 6π を使用して、らせんの x 座標と y 座標を定義します。らせんをプロットします。

t = linspace(0,6*pi,201);
x = t/pi.*cos(t);
y = t/pi.*sin(t);
plot(x,y)

Figure contains an axes. The axes contains an object of type line.

関数 atan2 を使用して、x 座標と y 座標から、らせんの位相角を求めます。関数 atan2 は、-ππ の閉区間にある角度値を返します。

P = atan2(y,x);
plot(t,P)

Figure contains an axes. The axes contains an object of type line.

このプロットには不連続点のあることがわかります。unwrap を使用して不連続性を排除します。unwrap は、P の連続する要素間の位相差が跳びのしきい値である π ラジアン以上の場合に、±2π の倍数を加算します。シフト後の位相角 Q は、区間 0 ~6π にあります。

Q = unwrap(P);
plot(t,Q)

Figure contains an axes. The axes contains an object of type line.

周波数応答の位相角をシフトします。この位相曲線には 2 つの跳びがあります。最初の跳びは W = 3W = 3.4 の間の 3.4250 ラジアンで、2 番目の跳びは W = 5W = 5.4 の間の 6.3420 ラジアンです。位相曲線をプロットします。

clear; close all;
W = [0:0.4:3, 3.4:0.4:5, 5.4:0.4:7];
P = [-1.5723
     -1.5747
     -1.5790
     -1.5852
     -1.5922
     -1.6044
     -1.6269
     -1.6998
      1.7252
      1.5989
      1.5916
      1.5708
      1.5582
     -4.7838
     -4.8143
     -4.8456
     -4.8764
     -4.9002];
plot(W,P,'bo-')

Figure contains an axes. The axes contains an object of type line.

unwrap で既定の跳びのしきい値 π ラジアンを使用して、位相角をシフトします。シフト後の位相曲線をプロットします。両方の跳びは、跳びのしきい値 π ラジアンより大きいため、シフトされます。

plot(W,unwrap(P),'ro-')

Figure contains an axes. The axes contains an object of type line.

次に、跳びのしきい値に 5 ラジアンを使用して位相角をシフトします。シフト後の位相曲線をプロットします。最初の跳びは、跳びのしきい値 5 ラジアンより小さいため、シフトされません。

plot(W,unwrap(P,5),'ro-')

Figure contains an axes. The axes contains an object of type line.

位相角を含む 2 列の行列 P を定義します。

P = [0 7.07; 0.19 0.98; 6.67 1.18; 0.59 1.37; 0.78 1.56]
P = 5×2

         0    7.0700
    0.1900    0.9800
    6.6700    1.1800
    0.5900    1.3700
    0.7800    1.5600

位相角 P(1,2) = 7.07 および P(3,1) = 6.67 には、残りのデータと比較して、π より大きい位相差があります。

まず、要素を列単位で比較して、位相角をアンラップします。引数 dim を 1 に指定します。2 番目の引数を [] に指定することで、既定の跳びのしきい値 π を使用します。

dim = 1;
P1 = unwrap(P,[],dim)
P1 = 5×2

         0    7.0700
    0.1900    7.2632
    0.3868    7.4632
    0.5900    7.6532
    0.7800    7.8432

列単位ではなく行単位で位相角をシフトするには、dim を 1 ではなく 2 に指定します。

dim = 2;
P2 = unwrap(P1,[],dim)
P2 = 5×2

         0    0.7868
    0.1900    0.9800
    0.3868    1.1800
    0.5900    1.3700
    0.7800    1.5600

入力引数

すべて折りたたむ

入力配列。ベクトル、行列または多次元配列として指定します。

データ型: single | double

位相シフトを適用するための跳びのしきい値。スカラーとして指定します。π 未満の跳びしきい値は、既定のしきい値 π と同じ効果になります。

データ型: single | double

演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

  • unwrap(P,[],1)P の列に沿って演算し、各列のシフト後の位相角を返します。

  • unwrap(P,[],2)P の行に沿って演算し、各行のシフト後の位相角を返します。

dimndims(P) より大きい場合、unwrap(P,[],dim)P を返します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

シフト後の位相角。ベクトル、行列または多次元配列として返されます。出力 Q のサイズは、常に入力 P のサイズと同じになります。

データ型: single | double

拡張機能

参考

| | |

R2006a より前に導入