Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Matrices como variablesMATLABPython

El paquete proporciona clases de matriz para representar matrices de tipos numéricos como variables para que las matrices se puedan pasar entre y.matlabPython®MATLAB®PythonMATLABPythonMATLAB

Crear matrices enMATLABPython

Puede crear matrices numéricas en una sesión llamando a los constructores desde el paquete (por ejemplo,,).MATLABPythonmatlabPythonmatlab.doublematlab.int32 El nombre del constructor indica el tipo numérico.MATLAB

Puede utilizar tipos personalizados para inicializar matrices dobles en.MATLABPython El tipo personalizado debe heredar de la clase base abstracta que se usará como inicializador.Pythoncollections.Sequence

Puede pasar matrices como argumentos de entrada a funciones llamadas con la API del motor para.MATLABMATLABPython Cuando una función devuelve una matriz numérica como un argumento de salida, el motor devuelve la matriz a.MATLABPython

Puede inicializar la matriz con un argumento de entrada opcional que contiene números. debe ser un tipo de secuencia como, u otro tipo de secuencia.initializerinitializerPythonlisttuple El argumento de entrada opcional establece el tamaño de la matriz a partir de una secuencia.size Puede crear matrices multidimensionales especificando que contengan varias secuencias de números o especificando que sean multidimensionales.initializersize Puede crear una matriz de números complejos estableciendo el argumento de entrada opcional.MATLABis_complexTrue El paquete proporciona los constructores de matriz enumerados en la tabla.matlabMATLAB

Clasematlab

Llamada de constructor enPython

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)

matlab.int16

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

matlab.int32

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

matlab.int64[a]

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

matlab.uint8

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

matlab.uint16

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

matlab.uint32

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

matlab.uint64[b]

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

matlab.logical

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

matlab.object

No hay constructor. Cuando una función devuelve un identificador o un objeto de valor a un objeto, el motor devuelve a.MATLABmatlab.objectPython

[a] In Python 2.7 on Windows, matlab.int64 is converted to int32 in MATLAB. Also, MATLAB cannot return an int64 array to Python.

[b] In Python 2.7 on Windows, matlab.uint64 is converted to uint32 in MATLAB. Also, MATLAB cannot return a uint64 array to Python.

[c] Logicals cannot be made into an array of complex numbers.

Cuando se crea una matriz con elementos, el tamaño es 1 por-porque es una matriz.NNMATLAB

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

El inicializador es un número que contiene cinco números.Pythonlist El tamaño de la matriz es 1-por-5, indicado por el,.MATLABtuple(1,5)

Atributos y métodos de matriz enMATLABPython

Todas las matrices creadas con constructores de paquetes tienen los atributos y métodos enumerados en esta tabla.MATLABmatlab

Atributo o método

Propósito

size

Tamaño de la matriz devuelta como untuple

reshape(size)

Remodele la matriz según lo especificado por secuenciasize

Matrices multidimensionales enMATLABPython

En, puede crear matrices multidimensionales de cualquier tipo numérico.PythonMATLAB Utilice dos variables para crear una matriz de 2 por 5 de dobles.PythonlistMATLAB

import matlab.engine 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]] 

El atributo de muestra que es una matriz de 2 por 5.sizeA

print(A.size) 
(2, 5) 

Índice en matrices enMATLABPython

Puede indexar en matrices tal y como puede indexar y variables.MATLABPythonlisttuple

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

El tamaño de la matriz es; por lo tanto, es.MATLAB(1,5)A[0][1,2,3,4,5] Índice en la matriz para obtener 3.

print(A[0][2]) 
3 

indexación está basada en cero.Python Al acceder a elementos de matrices en una sesión, utilice la indexación basada en cero.MATLABPython

Índice en una matriz multidimensional.MATLAB

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

Las matrices de sectores enMATLABPython

Puede segmentar las matrices del mismo modo que las segmentas y las variables.MATLABPythonlisttuple

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

Puede asignar datos a un sector. Este código muestra la asignación de a a un sector de una matriz.Pythonlist

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]] 

Puede asignar datos de otra matriz o de cualquier Iterable que contenga números.MATLABPython

Puede especificar sectores para la asignación como se muestra aquí.

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]] 

Nota

Las matrices de segmentación se comportan de forma diferente a la segmentación a.MATLABPythonlist Al cortar una matriz, se devuelve una vista en lugar de una copia superficial.MATLAB

Dada una matriz y una con los mismos valores, la asignación de un sector produce resultados diferentes, como se muestra en el código siguiente.MATLABPythonlist

A = matlab.int32([[1,2],[3,4],[5,6]]) L = [[1,2],[3,4],[5,6]] A[0] = A[0][::-1] L[0] = L[0][::-1] print(A) 
[[2,2],[3,4],[5,6]] 
print(L) 
[[2, 1], [3, 4], [5, 6]] 

Remodele matrices enMATLABPython

Puede cambiar la forma de una matriz con el método.MATLABPythonreshape El argumento INPUT debe ser una secuencia que conserve el número de elementos.size Se usa para cambiar una matriz de 1 por 9 a 3 por 3.reshapeMATLAB

import matlab.engine 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]] 

Temas relacionados