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

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

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

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

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

double
single

float

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

complex

int8
uint8
int16
uint16
int32

int

uint32
int64
uint64

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

NaN

float(nan)

Inf

float(inf)

string скаляр
char вектор

str

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

None

logical

bool

Структура

dict

Объект Python — pyВвод

type

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

moduleфункция

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

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

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

double

array.array('d')

single

array.array('f')

int8

array.array('b')

uint8

array.array('B')

int16

array.array('h')

uint16

array.array('H')

int32

array.array('i')

uint32

array.array('I')

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

array.array('q')

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

array.array('Q')

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

unicode

logical

memoryview

char вектор
string скаляр

str

cell вектор

tuple

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

Когда вы передаете действительные числовые или логические массивы функции Python, MATLAB автоматически преобразует данные в memoryview Python объект. Если выход функции 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.

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

Больше о