How to pass a structure from Matlab to Python

14 ビュー (過去 30 日間)
Jason Shih
Jason Shih 2015 年 7 月 3 日
回答済み: Jason Shih 2015 年 7 月 8 日
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!

採用された回答

Gareth Thomas
Gareth Thomas 2015 年 7 月 5 日
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 件のコメント
Jason Shih
Jason Shih 2015 年 7 月 6 日
編集済み: Jason Shih 2015 年 7 月 6 日
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

サインインしてコメントする。

その他の回答 (1 件)

Jason Shih
Jason Shih 2015 年 7 月 8 日
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.

カテゴリ

Help Center および File ExchangeCall MATLAB from Python についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by