Calling a matlab function with python subprocess.Popen
Afficher commentaires plus anciens
Hi,
I have a python code which runs a matlab function sussum(a,nx,ny) in the background with subprocess.Popen. I am not able to get it working. Because I'm unable to pass the input arguments to matlab correctly. Here is the python code:
#!/usr/bin/env python
import matlab.engine
import scipy.io as sio
import numpy as np
import subprocess as sb
nproc = 5
input = sio.loadmat('sus_py.mat')
totq = input['totq']
nx,ny = input['nx'],input['ny']
nq = totq+1
nx,ny = matlab.int32(nx.tolist()) , matlab.int32(ny.tolist())
iq = range(1,nq)
gp = len(iq)/nproc
list = [iq[j:j+nproc] for j in range(0,len(iq),nproc)]
for g in range(0,len(list)):
i = len(list[g])
p = []
for n in range(0,i):
a = matlab.int32(list[g][n])
fun = '-r "sussum(a,nx,ny); exit" '
lmb = ['/usr/local/bin/matlab','-nodesktop','-nosplash','-nodisplay','-nojvm',fun]
p.append(sb.Popen(lmb))
for q in p:
q.wait()
The python script executes in the command terminal of a cluster network, until it spits out the error message: Undefined function or variable 'a'.
I am sure that the matlab function sussum(a,nx,ny) works fine because I have tested it using Python-Matlab API as matlab.engine.start_matlab().sussum(a,nx,ny) and it gave the desired outputs. Any help in getting the python code running with subprocess.Popen() will be highly appreciated.
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Call MATLAB from Python dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!