Can you use .toarray() for to transform matlab.double objects to python arrays?

I have to transform N, a matlab.double object, size 118x4, to an python array in the fastest way possible, can you use the .toarray() function?
Otherwise I am doing numpy.asarray(N._data) which is fast, but not the best option.

답변 (1개)

Kunal Kandhari
Kunal Kandhari 2022년 12월 7일
There are a couple of ways to accomplish this. One method is to use numpy's built-in method, 'asarray':
Start by loading your matlab.double array:
myData = eng.eval("load('{}','cluster_class','par')".format('sampleData.mat'))
With MATLAB R2022a and later, you can convert matlab.double directly to a numpy array:
a = np.array(myData['cluster_class'])
To add additional specification, use MATLAB engine's functions to convert to a Python array with 'noncomplex()', then to a numpy array:
a = np.array(myData['cluster_class'].noncomplex().toarray(), 'int')
We use the 'noncomplex()' call to retrieve the data in 1D format (provided it's noncomplex; for complex data, we can use 'real()' and 'imag()' calls). We also offer the 'toarray()' call to convert a 1D matlab.double into a Python array.array object.

댓글 수: 1

Thank you for you answer! However I'm not trying to load a saved .mat file, but I already get my data in python as a matlab double, saving and loading would slow down a lot my program.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Call MATLAB from Python에 대해 자세히 알아보기

제품

릴리스

R2022b

질문:

2022년 12월 2일

댓글:

2022년 12월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by