MATLAB Answers

0

How to solve error during Python Matlab integration using pymatlab?

Asked by Meera Girijan on 1 May 2016
Latest activity Edited by wei du
on 4 Jun 2016
I am trying to call the matlab code written using python. After importing pymatlab, the next command session=pymatlab.session_factory() throws an error saying in line 51 an unexpected keyword argument "path" is encountered. I checked for online solutions where they asked me to change line 51 which was
session = MatlabSession(path=basedir,bufsize=output_buffer_size)
to :
session = MatlabSession(basedir,bufsize=output_buffer_size)
Even after doing this I am receiving the same error. Can anyone help me with this? least suggest another method for python matlab integration?

  2 Comments

Try
session = MatlabSession(basedir,output_buffer_size)
Tried that. The same error "__init__() got an unexpected keyword argument path" is displaying at the same line 51.

Sign in to comment.

2 Answers

Answer by Bo Li
on 2 May 2016

In case you are not aware of, Python Engine APIs can be used to call MATLAB functions from Python since R2014b:

  1 Comment

Sign in to comment.


Answer by wei du
on 4 Jun 2016
Edited by wei du
on 4 Jun 2016

I'm using Matlab R2012a 32Bit on Windows 10. I tried pymatlab and it works after some modification in matlab.py.
1. I set matlab_root to "C:\Program Files (x86)\MATLAB\R2012a" when I call pymatlab.MatlabSession.
2. I found out I have to change matlab directory to the dll_path of matlab to make sure the engine can be opened correctly. So I add codes below in pymatlab-0.2.3-py2.7.egg\pymatlab\matlab.py. After that, I can change the directory back.
3. If you want to use "session_factory", be careful of the path detected in "session_factory", it will be passed to "matlab.py" and you need to make sure libeng.dll and libmx.dll can be found in the path of "matlab.py".
dll_path = join(matlab_root, 'bin', 'win32')
os.chdir(dll_path)
self.engine = CDLL('libeng.dll')
self.mx = CDLL('libmx.dll')

  0 Comments

Sign in to comment.