Converting matlab.double to python compatible format
조회 수: 31 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Selena Mastrodonato
2023년 5월 4일
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
Selena Mastrodonato
2023년 5월 5일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Call Python from MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!