Используйте числовые переменные Python в MATLAB

В этом примере показано, как использовать Python® числовые типы в MATLAB®.

Использование Python числовые типы в MATLAB

При вызывании функции Python, которая берет числовой входной параметр, MATLAB преобразует двойные значения в типы, которые лучше всего представляют данные языку Python. Например, чтобы вызвать функции тригонометрии в math Python модуль, передайте 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 = 
  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

Вызовите методы Python с числовым iterable Аргументы

math.fsum Python функция суммирует значения с плавающей точкой в iterable входной параметр. Можно передать вектор MATLAB этой функции. Например, откройте patients.mat MATLAB файл данных и считал числовой массив 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

Используйте Python array Типы в MATLAB

Предположим, что у вас есть функция Python, которая возвращает следующий Python array.array типа double.

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

Используйте целое число Python array Типы в MATLAB

Предположим, что у вас есть массив Python 8-байтовых целых чисел со знаком. Вызовите reverse Python функция на массиве, затем преобразуйте результат в массив MATLAB.

arr = py.array.array('q',[int64(5),int64(1),int64(-5)])
arr = 
  Python array:

    5    1   -5

    Use details function to view the properties of the Python object.

    Use int64 function to convert to a MATLAB array.

arr.reverse
A = int64(arr)
A = 1×3 int64 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: [1×1 py.int]
    month: [1×1 py.int]
     year: [1×1 py.int]

    2014-12-31

Почему делают меня См. Свойства, когда я отображаю номер?

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