Main Content

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 함수의 경우, MATLAB은 이 유형을 int64형으로 자동 변환합니다. 예를 들어 bit_length 함수는 정수를 이진수로 표현하는 데 필요한 비트 수를 int형 값으로 반환합니다.

py.int(intmax).bit_length
ans = int64
    31

숫자형 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 with properties:

    itemsize: 8
    typecode: [1×1 py.str]

    array('d', [1.0, 2.0, 3.0, 4.0, 5.0])

P를 MATLAB 함수 sum에 전달하려면 P를 double형의 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 with properties:

    itemsize: 4
    typecode: [1×1 py.str]

    array('i', [5, 1, -5])

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

   -5    1    5

디폴트 숫자형

기본적으로 MATLAB에서 숫자는 double형입니다. 기본적으로 Python에서 (소수부가 없는) 숫자는 정수형입니다. 이 차이로 인해 숫자를 Python 함수에 전달할 때 혼동을 일으킬 수 있습니다.

예를 들어 다음 MATLAB 숫자를 Python datetime 함수에 전달하면 Python은 이 숫자를 float형으로 읽어 들이고 오류를 표시합니다.

d = py.datetime.date(2014,12,31)

Python Error: TypeError: integer argument expected, got float

오류를 수정하려면 각 숫자를 정수형으로 명시적으로 변환하십시오.

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

      day: 31
    month: 12
     year: 2014

    2014-12-31

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

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

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

    denominator: 1
           imag: 0
      numerator: 5
           real: 5

    5