При вызове Python® функция, MATLAB® преобразует данные MATLAB в типы, которые лучше всего представляют данные в язык Python.
Входной параметр MATLAB - | Результат на языке Python | Примеры |
---|---|---|
|
| Используйте числовые переменные Python в MATLAB |
Комплекс |
|
z = complex(1,2); py.cmath.polar(z) ans = Python tuple with no properties. (2.23606797749979, 1.1071487177940904) |
|
| |
|
| |
|
| |
|
| |
|
| Используйте переменные Python str в MATLAB |
|
|
py.list({string(missing),'Value'}) ans = Python list with no properties. [None, 'Value'] |
|
| |
Структура |
| Используйте переменные Python dict в MATLAB |
Объект Python - |
| |
указатель на функцию |
| Передайте функцию Python в функцию Python Map |
Входной параметр MATLAB - | Получившийся тип Python |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Когда вы передаете действительные числовые или логические массивы в функцию 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 отображает сообщение с советами о том, как продолжить. Если проблема может быть связана с передачей матрицы или многомерного массива в качестве аргумента, выполните следующее.
Проверьте документацию на функцию Python и узнайте ожидаемый тип аргумента.
Создайте объект Python этого типа в MATLAB и передайте его в функцию Python.
Например, предположим, что следующий код возвращает ошибку.
a = [1 2; 3 4]; py.pyfunc(a)
Если документация pyfunc
указывает, что ожидаемый тип pyType
, затем попробуйте это преобразование:
py.pyfunc(pyType(a))
Если ошибка повторяется, определите первопричину путем проверки дополнительной информации в исключении Python.
MATLAB автоматически преобразует эти типы данных, возвращенные с Python, в типы MATLAB. Для преобразования других типов смотрите Явное преобразование типов Python в типы MATLAB.
Тип возврата Python, отображаемый на Python | Полученный тип MATLAB - Скаляр |
---|---|
|
|
| Комплекс |
|
|
|
|
Все другие типы Python - | Объект Python - |
Используйте эти функции MATLAB для преобразования типов данных Python в типы MATLAB.
Тип возврата Python или протокол, как показано в MATLAB | Функция преобразования MATLAB | Примеры |
---|---|---|
|
| Используйте переменные Python str в MATLAB |
|
| |
|
| |
Объект с |
|
py.help('datetime.date.__str__') Help on wrapper_descriptor in datetime.date: datetime.date.__str__ = __str__(self, /) Return str(self). d = py.datetime.date(...
int32(2020),int32(3),int32(4));
char(d) ans = '2020-3-04' |
|
| |
|
| |
|
| |
Можно преобразовать |
| Используйте числовые переменные Python в MATLAB, для примера Используйте типы массивов Целого числа Python в MATLAB. |
Протокол последовательности; для примера, |
| Используйте Переменные списка Python в MATLAB Использование переменных кортежа Python в MATLAB |
Протокол отображения; для примера, |
| Используйте переменные Python dict в MATLAB |
Эти типы MATLAB не поддерживаются в Python.
Многомерный char
или cell
массивы
Массивы структур
Комплексные, скалярные целые числа или массивы
Разреженные массивы
categorical
,
table
,
containers.Map
,
datetime
типы
Объекты MATLAB
meta.class
(py
. class
)