Converting matlab.double to python compatible format
39 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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)
0 comentarios
Respuestas (1)
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))
Or if you want a Python list: py.list(rand(1,2))
py.list(rand(1,2))
3 comentarios
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.
Ver también
Categorías
Más información sobre Call Python from MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!