How to pass a structure from Matlab to Python

12 visualizzazioni (ultimi 30 giorni)
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!

Risposta accettata

Gareth Thomas
Gareth Thomas il 5 Lug 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 Commento
Jason Shih
Jason Shih il 6 Lug 2015
Modificato: Jason Shih il 6 Lug 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

Accedi per commentare.

Più risposte (1)

Jason Shih
Jason Shih il 8 Lug 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.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by