Main Content

atan2

固定小数点値の 4 象限逆正接

説明

z = atan2(y,x) は、fi 入力 y および x の 4 象限逆正接を返します。

すべて折りたたむ

関数 atan2 を使用して、符号なしおよび符号付きの固定小数点入力値の逆正接を計算します。

符号なしの入力値

この例では、符号なしの 16 ビットの語長値を使用します。

y = fi(0.125,0,16);
x = fi(0.5,0,16);  
z = atan2(y,x)
z = 
    0.2450

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 16
        FractionLength: 15

符号付きの入力値

この例では、符号付きの 16 ビットの語長値を使用します。

y = fi(-0.1,1,16);
x = fi(-0.9,1,16);  
z = atan2(y,x)
z = 
   -3.0309

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

入力引数

すべて折りたたむ

y 座標。スカラー、ベクトル、行列または多次元配列として指定します。

y および x には、実数値で符号付きまたは符号なしのスカラー、ベクトル、行列、または固定小数点型の角度の値をラジアン単位で含む N 次元配列を使用できます。入力 y および x は同じサイズでなければなりません。サイズが異なる場合は、少なくともどちらか一方の入力がスカラー値でなければなりません。yx の有効なデータ型は次のとおりです。

  • fi single

  • fi double

  • 2 進小数点スケーリングが指定されている fi 固定小数点

  • 2 進小数点スケーリングが指定されている、スケーリングされた fi double

データ型: fi

x 座標。スカラー、ベクトル、行列または多次元配列として指定します。

y および x には、実数値で符号付きまたは符号なしのスカラー、ベクトル、行列、または固定小数点型の角度の値をラジアン単位で含む N 次元配列を使用できます。入力 y および x は同じサイズでなければなりません。サイズが異なる場合は、少なくともどちらか一方の入力がスカラー値でなければなりません。yx の有効なデータ型は次のとおりです。

  • fi single

  • fi double

  • 2 進小数点スケーリングが指定されている fi 固定小数点

  • 2 進小数点スケーリングが指定されている、スケーリングされた fi double

データ型: fi

出力引数

すべて折りたたむ

4 象限逆正接。スカラー、ベクトル、行列または多次元配列として返されます。

zyx の 4 象限逆正接です。znumerictype は、次のように yx の符号属性に依存します。

  • y または x が符号付きの場合、z は範囲 [–pi,pi] の符号付き固定小数点数です。語長は 16 ビット、小数部の長さは 13 ビットとなります (numerictype(1,16,13)) 。

  • yx の両方が符号なしの場合、z は範囲 [0,pi/2] の符号なしの固定小数点数です。語長は 16 ビット、小数部の長さは 15 ビットとなります (numerictype(0,16,15)) 。

出力 z は常に既定の fimath に関連付けられています。

詳細

すべて折りたたむ

4 象限逆正接

4 象限逆正接は関数 atan に対して次のように定義されます。

atan2(y,x)={atan(yx)            x>0π+atan(yx)      y0,x<0π+atan(yx)    y<0,x<0π2                        y>0,x=0π2                      y<0,x=00                          y=0,x=0

アルゴリズム

すべて折りたたむ

関数 atan2 は、次のように 8 ビット ルックアップ テーブルを使用して、固定小数点の入力の 4 象限逆正接を計算します。

  1. 入力絶対値を除算し、0 ~ 1 の範囲にある符号なしの 16 ビット小数固定小数点の比を算出します。y と x の絶対値によって除数となる値が決まります。

    入力 y および x の符号によって、各入力の比がどの象限に含まれるかが決まります。絶対値が大きい方の入力が分母として使用されるため、得られる値は 0 から 1 の範囲になります。

  2. 符号なしの 16 ビット格納整数値を使用して、次のようにテーブル インデックスを計算します。

    1. 最上位 8 ビットを使用して、テーブルの最初の値を取得します。

    2. その次に大きいテーブルの値を 2 番目の値として使用します。

  3. 最下位 8 ビットを使用して、最近傍線形内挿によって最初と 2 番目の値の間を内挿します。この内挿により、[0, pi/4) の範囲の値が得られます。

  4. y および x の元の入力値に基づいて得られた角度に対して、八分円補正を実行します。

この逆正接の計算は、入力の最上位 16 ビットの範囲内でのみ正確です。

fimath の伝播ルール

関数 atan2 は、入力に追加されたすべての fimath を無視して破棄します。出力 z は常に既定の fimath に関連付けられています。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2012a で導入