Passing path as input argument in matlab.engine
    16 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Deepa Maheshvare
      
 le 17 Juin 2023
  
    
    
    
    
    Commenté : Deepa Maheshvare
      
 le 18 Juin 2023
            I'm using the following lines of code to run main.m (I:/xxx/simcode/xxx/main) with path as input argument, using matlabe engine
import matlab.engine
eng = matlab.engine.start_matlab()
eng.run("I:/xxx/simcode/xxx/main, ['I:/xxx/xxxx/xxx/task5'])
eng.quit()
But I get an error,
  self._result = pythonengine.getFEvalResult(self._future,self._nargout, None, out=self._out, err=self._err)
matlab.engine.MatlabExecutionError: Too many input arguments.
Could someone please suggest how to fix this?
I would like to run the main.m from python by passing an input argument which is a path.
Réponse acceptée
  Steven Lord
    
      
 le 18 Juin 2023
        The run function in MATLAB accepts only one input, the name of a script file. Is your main.m a script file or a function file? If the former it cannot accept input arguments; that's one of the defining characteristics of a script! If it's a function file, I think you can run it directly with something like (untested)
import matlab.engine
eng = matlab.engine.start_matlab()
eng.main("['I:/xxx/xxxx/xxx/task5']")
eng.quit()
Or if you need to change directories before calling your function, call cd then call feval in your MATLAB Engine session.
Note that I haven't used this functionality directly, I'm just going by what I see in the documentation.
4 commentaires
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Call MATLAB from Python dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!