Borrar filtros
Borrar filtros

Converting matlab.double to python compatible format

43 visualizaciones (últimos 30 días)
Lyle Collins
Lyle Collins el 4 de Mayo de 2023
Comentada: Lyle Collins el 8 de Mayo de 2023
The documentation on this page states that data of type:
MATLAB Input Argument Type —
1-by-N Vector
double (real)
Gets converted to:
Resulting Python Type
array.array('d')
Consequently, I thought this python code would work:
import matlab.engine
import array
me = matlab.engine.start_matlab()
array.array('d', me.rand(1, 2))
However, this returns:
TypeError: must be real number, not matlab.double
What is the most pythonic way to convert a standard matlab double array into a python fundamental data type? (e.g. list or array.array)

Respuestas (1)

Selena Mastrodonato
Selena Mastrodonato el 4 de Mayo de 2023
This syntax py.array.array('d', rand(1,2)) should work.
py.array.array('d', rand(1,2))
ans =
Python array: 0.6970 0.3219 Use details function to view the properties of the Python object. Use double function to convert to a MATLAB array.
Or if you want a Python list: py.list(rand(1,2))
py.list(rand(1,2))
ans =
Python list with values: [0.3941618631519793, 0.8464541453090321] Use string, double or cell function to convert to a MATLAB array.
  3 comentarios
Selena Mastrodonato
Selena Mastrodonato el 5 de Mayo de 2023
Hi Lyle, thank you for providing more informations.
You could try this command: me.rand(1, 2)[0].toarray(), you'll obtain array('d', [0.8147236863931789, 0.9057919370756192]).
Instead, if you want a python list you could use numpy, so try this: numpy.array(me.rand(1, 2)[0].toarray()) and you'll obtain [0.81472369 0.90579194].
If you have a multidimensional matrix, try to iterate over it to format data as you wish.

Iniciar sesión para comentar.

Categorías

Más información sobre Call Python from MATLAB en Help Center y File Exchange.

Productos


Versión

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by