주요 콘텐츠

MATLAB에서 Python 숫자형 변수 사용하기

이 예제에서는 MATLAB®에서 Python® 숫자형을 사용하는 방법을 보여줍니다.

MATLAB에서 Python 숫자형 사용하기

기본적으로 MATLAB에서 숫자는 배정밀도 유형입니다. 하지만 Python에서는 소수부가 없는 숫자가 기본적으로 정수형입니다. Python 함수가 숫자형 입력 인수를 받아서 호출될 때 발생하는 변환 오류를 해결하기 위해, MATLAB은 double형 값을 Python 언어에서 가장 적합하게 표현되는 유형으로 변환합니다.

예를 들어 Python math 모듈의 삼각 함수를 호출할 때 MATLAB double형 값을 전달합니다.

pynum = py.math.radians(90)
pynum = 
1.5708

함수가 Python float형을 반환하는 경우, MATLAB은 이 유형을 double형으로 자동 변환합니다.

class(pynum)
ans = 
'double'

함수가 Python int형을 반환하는 경우, MATLAB은 이 유형을 int형으로 자동 변환합니다. 예를 들어 bit_length 함수는 정수를 이진수로 표현하는 데 필요한 비트 수를 int형 값으로 반환합니다.

py.int(intmax).bit_length
ans = 
  Python int with properties:

    denominator: [1×1 py.int]
           imag: [1×1 py.int]
      numerator: [1×1 py.int]
           real: [1×1 py.int]

    31

또한 MATLAB은 인수를 Python 함수에 전달하기 전에 MATLAB double형 값을 Python int로 변환할 때 Python 유형 힌트를 사용합니다. (R2024b 이후)

예를 들어 Python date 생성자에는 정수 입력값이 필요합니다. 사용자가 MATLAB 숫자를 Python datetime 모듈의 date 생성자에 전달하면 MATLAB은 먼저 double형 값을 정수로 변환합니다.

d = py.datetime.date(2014,12,31)
d = 
  Python date with properties:

      day: [1×1 py.int]
    month: [1×1 py.int]
     year: [1×1 py.int]

    2014-12-31

double형을 int형으로 변환하는 작업은 유형 힌트 정보를 제공하는 사용자 작성 함수에도 지원됩니다. 하지만 MATLAB에서는 유형 힌트 정보의 사용이 제한됩니다. 예를 들어 Python typing 모듈과 같은 모듈은 지원되지 않습니다. MATLAB은 스텁 모듈 또는 스텁을 포함하는 모듈에서도 유형 힌트를 지원하지 않습니다. 그 외에 MATLAB은 정밀도 손실이 없는 경우에만 double형을 int형으로 변환합니다.

숫자형 iterable 인수를 갖는 Python 메서드 호출하기

Python math.fsum 함수는 iterable 입력 인수에 있는 부동소수점 값을 합산합니다. 이 함수에 MATLAB 벡터를 전달할 수 있습니다. 예를 들어 MATLAB patients.mat 데이터 파일을 열고 숫자형 배열 Height를 읽어보겠습니다.

load patients.mat
class(Height)
ans = 
'double'
size(Height)
ans = 1×2

   100     1

Python에 이 인수를 전달할 때, MATLAB은 숫자형 값을 Python 숫자형 값으로 자동 변환하고 Python은 이 벡터 값을 대상으로 반복 작업을 수행합니다.

py.math.fsum(Height)
ans = 
6707

MATLAB에서 Python array 유형 사용하기

다음과 같은 double형 Python array.array를 반환하는 Python 함수가 있다고 가정하겠습니다.

P = py.array.array('d', 1:5)
P = 
  Python array:

     1     2     3     4     5

    Use details function to view the properties of the Python object.

    Use double function to convert to a MATLAB array.

P를 MATLAB 함수 sum에 전달하려면 Pdouble형의 MATLAB 배열로 변환합니다.

sum(double(P))
ans = 
15

MATLAB에서 Python 정수 array 유형 사용하기

다음과 같은 Python 배열이 있다고 가정하겠습니다. 배열에 대해 Python reverse 함수를 호출한 다음 그 결과를 MATLAB 배열로 변환합니다.

arr = py.array.array('i',[int32(5),int32(1),int32(-5)])
arr = 
  Python array:

    5    1   -5

    Use details function to view the properties of the Python object.

    Use int32 function to convert to a MATLAB array.

arr.reverse
A = int32(arr)
A = 1×3 int32 row vector

   -5    1    5

숫자를 나타낼 때 속성이 표시되는 이유

MATLAB은 모든 Python 유형을 객체로 표시하며, 이 객체에는 객체 속성의 목록이 포함됩니다. 숫자형의 경우, MATLAB은 사용자가 기대한 출력값을 마지막 라인에 표시합니다.

py.int(5)
ans = 
  Python int with properties:

    denominator: [1×1 py.int]
           imag: [1×1 py.int]
      numerator: [1×1 py.int]
           real: [1×1 py.int]

    5

참고 항목

도움말 항목