Когда вы передаете данные MATLAB® в качестве аргументов к Python®, MATLAB преобразовывает данные в типы, которые лучше всего представляют данные языку Python.
Тип входного параметра MATLAB — | Получившийся Python тип |
|---|---|
|
|
Комплексный |
|
|
|
|
|
|
|
|
|
|
|
Значение |
|
|
|
Структура |
|
Объект Python — |
|
указатель на функцию |
|
Тип входного параметра MATLAB — | Получившийся тип Python |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Массив |
|
|
|
Вектор |
|
Вектор |
|
Когда вы передаете действительные числовые или логические массивы функции 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 отображает сообщение с советами о том, как продолжить. Если проблема может произойти из-за передачи матрицы или многомерного массива в качестве аргумента, то сделайте следующее.
Проверяйте, что документация для Python функционирует и узнает ожидаемый тип для аргумента.
Создайте объект Python того типа в MATLAB и передаче, которые к Python функционируют.
Например, предположите, что следующий код возвращает ошибку.
a = [1 2; 3 4]; py.pyfunc(a)
Если документация pyfunc указывает, что ожидаемым типом является pyType, то попробуйте это преобразование:
py.pyfunc(pyType(a))
Если ошибка сохраняется, то определите первопричину путем проверки на дополнительную информацию в исключении Python.