Main Content

atan2

고정소수점 값의 4사분면 역탄젠트

설명

예제

z = atan2(y,x)fi 입력값 yx의 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 좌표로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

yx는 고정소수점 각도 값(단위: 라디안)을 포함하는, 부호 있는 또는 부호 없는 실수 값의 스칼라, 벡터, 행렬 또는 N차원 배열일 수 있습니다. 입력값 yx의 크기는 같아야 합니다. 크기가 같지 않은 경우 적어도 하나의 입력값은 스칼라 값이어야 합니다. yx의 유효한 데이터형은 다음과 같습니다.

  • fi single형

  • fi double형

  • 이진 소수점 스케일링을 사용하는 fi 고정소수점

  • 이진 소수점 스케일링을 사용하는 fi 스케일링된 double형

데이터형: fi

x 좌표로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

yx는 고정소수점 각도 값(단위: 라디안)을 포함하는, 부호 있는 또는 부호 없는 실수 값의 스칼라, 벡터, 행렬 또는 N차원 배열일 수 있습니다. 입력값 yx의 크기는 같아야 합니다. 크기가 같지 않은 경우 적어도 하나의 입력값은 스칼라 값이어야 합니다. yx의 유효한 데이터형은 다음과 같습니다.

  • fi single형

  • fi double형

  • 이진 소수점 스케일링을 사용하는 fi 고정소수점

  • 이진 소수점 스케일링을 사용하는 fi 스케일링된 double형

데이터형: fi

출력 인수

모두 축소

4사분면 역탄젠트로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다.

zyx의 4사분면 역탄젠트입니다. znumerictypeyx의 부호의 유무에 따라 달라집니다.

  • yx 중 하나가 부호가 있는 경우 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의 절댓값에 따라 제수 값이 결정됩니다.

    yx 입력값의 부호에 따라 이들 비율이 놓일 사분면이 결정됩니다. 절댓값이 더 큰 입력값이 분모로 사용되기 때문에 0과 1 사이의 값이 생성됩니다.

  2. 16비트의 저장된 부호 없는 정수 값을 토대로 테이블 인덱스를 계산합니다.

    1. 8개의 최상위 비트를 사용하여 테이블의 첫 번째 값을 얻습니다.

    2. 다음으로 큰 테이블 값을 두 번째 값으로 사용합니다.

  3. 8개의 최하위 비트를 사용하여 첫 번째 값과 두 번째 값 사이를 최근접이웃 선형 보간을 사용하여 보간합니다. 이 보간은 범위 [0, pi/4)의 값을 생성합니다.

  4. 원래 yx 입력값을 기반으로 결과 각도에 대해 8분원 보정을 수행합니다.

이 역탄젠트 계산은 입력값의 최상위 비트 16개 내에서만 정확합니다.

fimath 전파 규칙

atan2 함수는 입력값에 연결된 모든 fimath를 무시하고 폐기합니다. 출력값 z는 항상 디폴트 fimath와 연결됩니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2012a에 개발됨

참고 항목

| | | |