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
에 전달하려면 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: 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