주요 콘텐츠

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와 연결됩니다.

세부 정보

모두 축소

알고리즘

모두 축소

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개 내에서만 정확합니다.

확장 기능

모두 확장

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

버전 내역

R2012a에 개발됨

참고 항목

| | | |