Converting a Python list into a MATLAB cellstr through Python MATLAB engine
조회 수: 3 (최근 30일)
이전 댓글 표시
Hello there,
I have a list of paths to files (so basically strings) in Python, for example:
#python code
lst = ['fls/01_1.nii', 'fls/02_1.nii', 'fls/03_1.nii', 'fls/04_1.nii']
What I'm trying to achieve is to move the list into MATLAB - I need to convert it into a 4x1 cell (the outcome in MATLAB would look like that):
4×1 cell array
{'fls/01_1.nii'}
{'fls/02_1.nii'}
{'fls/03_1.nii'}
{'fls/04_1.nii'}
What I've done so far in Python:
import matlab.engine, matlab
eng = matlab.engine.start_matlab()
#first option
eng.workspace['matlab_list'] = lst
#second option
eng.workspace['matlab_list'] = eng.cellstr(lst)
#third option
eng.workspace['matlab_list'] = eng.reshape(eng.cellstr(lst), 4, 1)
#fourth option
eng.workspace['matlab_list'] = lst
eng.workspace['matlab_list'] = eng.eval("cellstr(lst)")
The code above should pretty much do the trick - my MATLAB engine even tells me that I'm dealing with a cell:
In[73]: eng.eval('class(matlab_list)')
Out[73]: 'cell'
Sadly, whenever I try to use that variable in a function from SPM (MATLAB based software package used in analysis of brain imaging data sequences), I'm getting an error:
Item 'Time 1 Volumes', field 'val': Value must be either empty, a cellstr or a cfg_dep object.
Here's what shows up in MATLAB_R2018a if I save the variable into a .mat file and try loading it there:
matlab_list =
4×12 char array
'fls/01_1.nii'
'fls/02_1.nii'
'fls/03_1.nii'
'fls/04_1.nii'
>> cellstr(matlab_list)
ans =
4×1 cell array
{'fls/01_1.nii'}
{'fls/02_1.nii'}
{'fls/03_1.nii'}
{'fls/04_1.nii'}
Using the cellstr() function does the trick in MATLAB, but now I'm pretty keen on finding a way to change the char array into a cell array using Python MATLAB engine - so far no luck and I'm out of ideas at the moment.
I would be very grateful for any help or suggestions on fixing this particular issue.
Best Regards,
MG
댓글 수: 0
답변 (1개)
참고 항목
카테고리
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!