Массивы MATLAB как переменные Python

matlab Пакет Python® обеспечивает классы массивов, чтобы представлять массивы MATLAB® числовые типы как переменные Python. Другие типы MATLAB также поддерживаются, как перечислено в Данных о Передаче к MATLAB из Python. Для получения информации об установке matlab Пакет Python, смотрите Установку Python MATLAB Compiler SDK Пакет.

Создание массивов MATLAB в Python

Можно создать числовые массивы MATLAB на сеансе Python путем вызова конструкторов от matlab Пакет Python (например, matlab.double, matlab.int32). Имя конструктора указывает на MATLAB числовой тип. Можно передать массивы MATLAB как входные параметры к функциям MATLAB, названным из Python. Когда функция MATLAB возвращает числовой массив как выходной аргумент, массив возвращен в Python.

Можно инициализировать массив дополнительным initializer входной параметр, который содержит числа. initializer аргумент должен быть типом последовательности Python, таким как список или кортеж. Дополнительный size входной параметр устанавливает размер инициализированного массива. Чтобы создать многомерные массивы, задайте initializer содержать несколько последовательностей чисел или задавать size быть многомерным. Можно создать массив MATLAB комплексных чисел путем установки дополнительного is_complex аргумент ключевого слова к True. mlarray модуль предоставляет перечисленных в таблице конструкторов Array MATLAB.

Класс от matlab Пакет

Вызов конструктора в Python

MATLAB числовой тип

matlab.double

matlab.double(
initializer=None,
size=None,
is_complex=False)

Двойная точность

matlab.single

matlab.single(
initializer=None,
size=None,
is_complex=False)

Одинарная точность

matlab.int8

matlab.int8(
initializer=None,
size=None,
is_complex=False)

8-битное целое число со знаком

matlab.int16

matlab.int16(
initializer=None,
size=None,
is_complex=False)

16-битное целое число со знаком

matlab.int32

matlab.int32(
initializer=None,
size=None,
is_complex=False)

32-битное целое число со знаком

matlab.int64A

matlab.int64(
initializer=None,
size=None,
is_complex=False)

64-битное целое число со знаком

matlab.uint8

matlab.uint8(
initializer=None,
size=None,
is_complex=False)

8-битное беззнаковое целое

matlab.uint16

matlab.uint16(
initializer=None,
size=None,
is_complex=False)

16-битное беззнаковое целое

matlab.uint32

matlab.uint32(
initializer=None,
size=None,
is_complex=False)

32-битное беззнаковое целое

matlab.uint64B

matlab.uint64(
initializer=None,
size=None,
is_complex=False)

64-битное беззнаковое целое

matlab.logical

matlab.logical(
initializer=None,
size=None)[c]

Логический

[a]  В Python на Windows, matlab.int64 преобразован в int32 в MATLAB. Кроме того, MATLAB не может возвратить int64 массив к Python.

[b]  В Python на Windows, matlab.uint64 преобразован в uint32 в MATLAB. Кроме того, MATLAB не может возвратить uint64 массив к Python.

[c]  Logicals не может быть превращен в массив комплексных чисел.

Когда вы создаете массив с N элементы, размер 1 N потому что это - массив MATLAB.

import matlab
A = matlab.int8([1,2,3,4,5])
print(A.size)

(1, 5)

Инициализатор является списком Python, содержащим пять чисел. Размер массивов MATLAB 1 на 5, обозначается кортежем (1,5).

Атрибуты массивов MATLAB и методы в Python

Все массивы MATLAB создаются с matlab у конструкторов пакета есть атрибуты и методы, перечисленные в следующей таблице:

Атрибут или метод

Цель

size

Размер массива, возвращенного как кортеж

reshape(size)

Измените размерность массива, как задано последовательностью size

Многомерные массивы MATLAB в Python

В Python можно создать многомерные массивы MATLAB любого числового типа. Используйте два списка Python плаваний, чтобы создать 2 5 массив типа double MATLAB.

import matlab
A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]])
print(A)

[[1.0,2.0,3.0,4.0,5.0],[6.0,7.0,8.0,9.0,10.0]]

size атрибут A показывает, что это 2 5 массив.

print(A.size)

(2, 5)

Индексация в массивы MATLAB в Python

Можно индексировать в массивы MATLAB, как можно индексировать в списки Python и кортежи.

import matlab
A = matlab.int8([1,2,3,4,5])
print(A[0])

[1,2,3,4,5]

Размером массива MATLAB является (1,5); поэтому, A[0] [1,2,3,4,5]. Индексируйте в массив, чтобы добраться 3.

print(A[0][2])

3

Индексация Python основана на нуле. Когда вы получаете доступ к элементам массивов MATLAB на сеансе Python, используете основанную на нуле индексацию.

В этом примере показано, как индексировать в многомерный массив MATLAB.

A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]])
print(A[1][2])

8.0

Срез массивы MATLAB в Python

Можно нарезать массивы MATLAB, как можно нарезать списки Python и кортежи.

import matlab
A = matlab.int8([1,2,3,4,5])
print(A[0][1:4])

[2,3,4]

Можно присвоить данные срезу. Этот пример показывает присвоение от списка Python до массива.

A = matlab.double([[1,2,3,4],[5,6,7,8]])
A[0] = [10,20,30,40]
print(A)

[[10.0,20.0,30.0,40.0],[5.0,6.0,7.0,8.0]]

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

Можно задать срезы для присвоения, как показано в этом примере.

A = matlab.int8([1,2,3,4,5,6,7,8])
A[0][2:4] = [30,40]
A[0][6:8] = [70,80]
print(A)

[[1,2,30,40,5,6,70,80]]

Примечание

Разрезание массивов MATLAB ведет себя по-другому по сравнению с разрезанием списка Python. Разрезание массива MATLAB возвращает представление вместо мелкой копии.

Учитывая массив MATLAB и Python перечисляют с теми же значениями, присваивая срез результаты в различных результатах.

>>>mlarray = matlab.int32([[1,2],[3,4],[5,6]])
>>>py_list = [[1,2],[3,4],[5,6]]
>>>mlarray[0] = mlarray[0][::-1]
>>>py_list[0] = py_list[0][::-1]
>>>mlarray[0]
matlab.int32([[2,2],[3,4],[5,6]])
>>>py_list
[[2,1],[3,4],[5,6]]

Изменение размерность массивов MATLAB в Python

Можно изменить размерность массива MATLAB в Python с reshape метод. Входной параметр, size, должна быть последовательность, которая не изменяет число элементов в массиве. Используйте reshape измениться 1 9 массив MATLAB к 3х3.

import matlab
A = matlab.int8([1,2,3,4,5,6,7,8,9])
A.reshape((3,3))
print(A)

[[1,4,7],[2,5,8],[3,6,9]]

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте