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