Передача данных Python

Тип MATLAB к Отображению типа в Python

Когда вы передаете данные MATLAB® в качестве аргументов к Python®, MATLAB преобразовывает данные в типы, которые лучше всего представляют данные языку Python.

Тип входного параметра MATLAB —
Скалярные значения только

Получившийся Python py. Ввод

'double'
единственный

float

Комплексный single
Комплексный double

комплекс

int8
uint8
int16
uint16
int32

int

uint32
int64
uint64

int
long (только версия 2.7)

NaN

float(nan)

Inf

float(inf)

скаляр строки
Вектор char

str

Значение <missing> в string

'none'

логический

bool

Структура

dict

Объект Python — py.type

ввод

указатель на функцию @ py.module.function, к Python функционирует только

module.function

Вектор MATLAB к отображению Python

Тип входного параметра MATLAB —
1-by-N вектор

Получившийся тип Python

'double'

массив. массив ('d')

единственный

массив. массив ('f')

int8

массив. массив ('b')

uint8

массив. массив ('B')

int16

массив. массив ('h')

uint16

массив. массив ('H')

int32

массив. массив ('i')

uint32

массив. массив ('я')

int64 (Не поддерживаемый для Python 2.7 на Windows®)

массив. массив ('q')

uint64 (Не поддерживаемый для Python 2.7 на Windows)

массив. массив ('Q')

Массив char, содержащий значения, больше, чем 127 (только версия 2.7)

unicode

логический

memoryview

Вектор char
скаляр строки

str

Вектор cell

tuple

Передача матриц и многомерных массивов

Когда вы передаете действительные числовые или логические массивы функции Python, MATLAB автоматически преобразовывает данные в объект Python memoryview. Если вывод функции Python реализует буферный протокол Python и действителен числовой или логический, то MATLAB отображается:

  • Фактический тип Python

  • Базовые данные

  • Соответствующая функция преобразования MATLAB. Используйте эту функцию, чтобы полностью преобразовать объект Python в массив MATLAB.

Например, предположите, что вы вызываете функцию Python в модуле pyModule, который возвращает переменную типа pyType с этими значениями:

p = 
  Python pyType:

     8     1     6
     3     5     7
     4     9     2

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

    Use double function to convert to a MATLAB array.

Чтобы преобразовать p в матрицу MATLAB P, введите:

P = double(p)
P = 3×3    
     8     1     6
     3     5     7
     4     9     2

Если вам нужна определенная информация о свойствах Python p, введите:

details(p)
  py.pyModule.pyType handle with properties:

           T: [1×1 py.pyModule.pyType]
        base: [1×1 py.NoneType]
      ctypes: [1×1 py.pyModule.core._internal._ctypes]
        data: [1×3 py.memoryview]
       dtype: [1×1 py.pyModule.dtype]
       flags: [1×1 py.pyModule.flagsobj]
        flat: [1×1 py.pyModule.flatiter]
        imag: [1×1 py.pyModule.pyType]
    itemsize: [1×1 py.int]
      nbytes: [1×1 py.int]
        ndim: [1×1 py.int]
        real: [1×1 py.pyModule.pyType]
       shape: [1×2 py.tuple]
        size: [1×1 py.int]
     strides: [1×2 py.tuple]

  Methods, Events, Superclasses

Если модуль Python обеспечивает содержимое в своем атрибуте __doc__, то ссылки MATLAB на ту информацию.

Используя Python объекты memoryview позволяет Python считывать данные MATLAB, не делая копию данных MATLAB. Для получения информации о memoryview возражает и буферный протокол, поиск этих условий в https://www. python. org/doc/.

MATLAB комплексные и разреженные массивы не поддержан в Python. Смотрите Неподдерживаемые Типы MATLAB.

Ошибки аргумента Поиска и устранения проблем

Если функция Python ожидает определенный тип многомерного массива Python, то MATLAB отображает сообщение с советами о том, как продолжить. Если проблема может произойти из-за передачи матрицы или многомерного массива в качестве аргумента, то сделайте следующее.

  1. Проверьте, что документация для Python функционирует и узнает ожидаемый тип для аргумента.

  2. Создайте объект Python того типа в MATLAB и передаче, которые к Python функционируют.

Например, предположите, что следующий код возвращает ошибку.

a = [1 2; 3 4];
py.pyfunc(a)

Если документация pyfunc указывает, что ожидаемым типом является pyType, то попробуйте это преобразование:

py.pyfunc(pyType(a))

Если ошибка сохраняется, то определите первопричину путем проверки на дополнительную информацию в исключении Python.

Связанные примеры

Больше о

Была ли эта тема полезной?