При вызове 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 Функция |
Тип входного параметра MATLAB — | Получившийся тип Python |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Когда вы передаете числовые или логические массивы функции Python, MATLAB автоматически преобразует данные в memoryview Python объект. Если выход функции Python реализует буферный протокол Python и является числовым или логическим, то MATLAB отображается:
Фактический тип Python
Базовые данные
Соответствующая функция преобразования MATLAB. Используйте эту функцию, чтобы полностью преобразовать объект Python в массив MATLAB.
Например, создайте файл test.py содержа этот код:
def returnData(data): return data
Передать массив MATLAB returnDataВвод:
m = magic(3); p = py.test.returnData(m)
Преобразовывать p к матрице MATLAB PВвод:
P = double(p)
P = 3×3
8 1 6
3 5 7
4 9 2
Если вам нужна определенная информация о свойствах Python pВвод:
details(p)
py.test.memoryview handle with properties:
T: [1×1 py.test.memoryview]
base: [1×1 py.NoneType]
ctypes: [1×1 py.test.core._internal._ctypes]
data: [1×3 py.memoryview]
dtype: [1×1 py.test.dtype]
flags: [1×1 py.test.flagsobj]
flat: [1×1 py.test.flatiter]
imag: [1×1 py.test.memoryview]
itemsize: [1×1 py.int]
nbytes: [1×1 py.int]
ndim: [1×1 py.int]
real: [1×1 py.test.memoryview]
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Класс)