convert a Python tuple containing string and numerical data types to Matlab

조회 수: 10 (최근 30일)
Dominique Nguyen
Dominique Nguyen 2020년 3월 8일
댓글: Stephen23 2024년 11월 13일
How do I convert the following tuple in python and save it to a "test.mat" file so that I can load and read it in Matlab:
py_tuple = [('cars', 'gm', [['red', 10],['black', 15]]),
('cars', 'ford', ['green',5]),
('cars', 'honda', [])]
  댓글 수: 1
Stephen23
Stephen23 2024년 11월 13일
"How do I convert the following tuple in python and save it to a "test.mat" file so that I can load and read it in Matlab:"
Unless you really enjoy fiddling around with files, why not simply access the data directly from MATLAB?:
L = pyrun("x = [('cars', 'gm', [['red', 10],['black', 15]]), ('cars', 'ford', ['green',5]), ('cars', 'honda', [])]","x")
L =
Python list with values: [('cars', 'gm', [['red', 10], ['black', 15]]), ('cars', 'ford', ['green', 5]), ('cars', 'honda', [])] Use string, double or cell function to convert to a MATLAB array.
L{1}
ans =
Python tuple with values: ('cars', 'gm', [['red', 10], ['black', 15]]) Use string, double or cell function to convert to a MATLAB array.
L{2}
ans =
Python tuple with values: ('cars', 'ford', ['green', 5]) Use string, double or cell function to convert to a MATLAB array.
L{3}
ans =
Python tuple with values: ('cars', 'honda', []) Use string, double or cell function to convert to a MATLAB array.
etc.

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

답변 (2개)

Rajani Mishra
Rajani Mishra 2020년 3월 11일
You can either save the data as
1)Python tuple itself in .mat file. For that you have to create a variable of type “py.tuple()” in MATLAB. For more information refer: https://www.mathworks.com/help/matlab/python-data-types.html?s_tid=CRUX_lftnav
Example:
myTuple = py.tuple({'red',10});
myTuple2 = py.tuple({'cars','gm',tuple});
2) Create a cell array with the same elements and store and load it from a mat file. As cell also supports different data types like tuples to be stored. For creating a cell array refer below:

Al Danial
Al Danial 2022년 4월 20일
The SciPy module has a function, savemat, which can write Python variables to MATLAB .m files. Your tuple can be written to test.mat with
from scipy.io import savemat
py_tuple = [('cars', 'gm', [['red', 10],['black', 15]]),
('cars', 'ford', ['green',5]),
('cars', 'honda', [])]
M = { 'py_tuple' : py_tuple }
savemat('test.mat', M)
Loading test.mat in MATLAB gives
>> t = load('test.mat');
>> t.py_tuple
ans =
3×3 cell array
{'cars'} {'gm' } {2×2×21 char }
{'cars'} {'ford' } {2×21 char }
{'cars'} {'honda'} {0×0 double}
Section 7.14 of Python for MATLAB Development covers reading and writing .mat files to/from Python in detail.

카테고리

Help CenterFile Exchange에서 Call Python from MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by