How to pass a structure from Matlab to Python

21 Ansichten (letzte 30 Tage)
Jason Shih
Jason Shih am 3 Jul. 2015
Beantwortet: Jason Shih am 8 Jul. 2015
I'm using Matlab(2014b) and Python(2.7.6) for mix programming. I tried to pass a structure from Matlab to Python,but I failed.
The structure I want to pass is:
dmodel = struct('regr',regr, 'corr',corr, 'theta',theta.', ...
'beta',fit.beta, 'gamma',fit.gamma, 'sigma2',sY.^2.*fit.sigma2, ...
'S',S, 'Ssc',[mS; sS], 'Ysc',[mY; sY], ...
'C',fit.C, 'Ft',fit.Ft, 'G',fit.G);
In the structure all the elements are scalar except Ssc and Ysc.
The Matlab script looks like this:
function model=Fun_mat()
...
some command;
...
model = dmodel;
end
and the Python script looks like this:
import matlab.engine as meng
eng = meng.start_matlab()
dmodel = eng.Fun_mat()
eng.quit()
These two scripts are in the same directory.
What should I do? Any help is appreciate!

Akzeptierte Antwort

Gareth Thomas
Gareth Thomas am 5 Jul. 2015
Hi Jason,
Have you seen this page in the R2015a documentation:
Please note that this is used for the MATLAB engine which can be called from python. I hope that this helps you.
Best regards, Gareth
  1 Kommentar
Jason Shih
Jason Shih am 6 Jul. 2015
Bearbeitet: Jason Shih am 6 Jul. 2015
Hi Gareth,
Thanks for your reply. I have read that document before, but I still have some problems.
The structure I want is
dmodel =
regr: 1
corr: 2
theta: [0.4419 0.1091]
beta: [6x1 double]
gamma: [1x100 double]
sigma2: 949.8115
S: [100x2 double]
Ssc: [2x2 double]
Ysc: [2x1 double]
C: [100x100 double]
Ft: [100x6 double]
G: [6x6 double]
(I'm sorry I was wrong about the element type before.)
The problem is that when Matlab return the struture with element 'C'(a 100*100 double matrix), I get the messeage below in Python:
Segmentation fault (core dumped)
But when the Matlab return the structre without the element 'C', I get no error in Python.
What should I do?
Best regards, Jason

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jason Shih
Jason Shih am 8 Jul. 2015
I have figured out what's wrong in that script. The element 'C' in the structure in a sparse matrix, which in not supported by the engine now.

Kategorien

Mehr zu Call MATLAB from Python finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by