В этом примере показано, как использовать числовые типы Python ® в MATLAB ®.
При вызове функции Python, которая принимает численный входной параметр, MATLAB преобразует двойные значения в типы, которые лучше всего представляют данные в язык Python. Например, чтобы вызвать функции тригонометрии в math
Python передайте двойное значение MATLAB.
pynum = py.math.radians(90)
pynum = 1.5708
Для функций, которые возвращают float Python
типы, MATLAB автоматически преобразует этот тип в двойной.
class(pynum)
ans = 'double'
Для функций Python, возвращающих целые типы, MATLAB автоматически преобразует этот тип в int64
. Для примера, bit_length
функция возвращает количество бит, необходимых для представления целого числа в двоичном формате как int
значение.
py.int(intmax).bit_length
ans = int64
31
iterable
АргументыThe 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
array
Типы в MATLABПредположим, что у вас есть функция Python, которая возвращает следующий Python array.array
типа double.
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
в массив MATLAB типа double.
sum(double(P))
ans = 15
array
Типы в MATLABПредположим, что у вас есть этот массив 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 в datetime
Python функция, 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