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