Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Solucionar errores enMATLABPython

Errores enMATLABPython

Cuando una función genera un error, el motor para detiene la función y detecta la excepción planteada.MATLAB®MATLABPython®MATLAB El motor copia el mensaje de error en una nueva excepción.Python El motor genera la excepción.Python

Si el intérprete detecta la excepción, el intérprete muestra el mensaje de error que vino de.PythonMATLAB También puede controlar las excepciones que genera el motor en el código.Python Consulte las páginas de referencia y los tipos de excepciones que puede generar el motor.matlab.engine.MatlabEnginematlab.engine.FutureResult

MatlabExecutionError: función no definida

Llame a la función en un entero desde.MATLABsqrtPython (Este ejemplo de código omite el seguimiento y muestra el mensaje de error solamente.)Python

import matlab.engine eng = matlab.engine.start_matlab() print(eng.sqrt(4)) 
matlab.engine.MatlabExecutionError: Undefined function 'sqrt' for input arguments of type 'int64'. 

define una función, pero espera que el argumento de entrada sea de tipo de datos, no un entero.MATLABsqrtdouble Sin embargo, el argumento de entrada es 4 y antes de que se pase a, interpreta 4 como un entero.MATLABPython El motor convierte el entero a un tipo de datos.Pythonint64MATLAB

y definir diferentes tipos predeterminados para los números.MATLABPython Si escribe en la línea de comandos, es un.x = 4MATLABxMATLABdouble Si escribe en la línea de comandos, es un.x = 4PythonxPythonint

Para evitar este error, especifique los argumentos de entrada que son del tipo de datos.Pythonfloat El motor convierte este tipo a.MATLABdouble

print(eng.sqrt(4.0)) 
2.0 

SyntaxError: expresión destino no válido

Puede llamar a la función para crear variables.MATLABevalPythonMATLAB (Este ejemplo de código omite el seguimiento y muestra el mensaje de error solamente.)Python

import matlab.engine eng = matlab.engine.start_matlab() eng.eval("x = 4;") 
SyntaxError: Error: The expression to the left of the equals sign is not a  valid target for an assignment.

Cuando el motor llama, pasa una instrucción a para su ejecución.evalMATLAB Cuando no especifica el argumento de entrada de argumento de entrada, el motor espera un argumento de salida.nargout Sin embargo, esta instrucción no devuelve ningún argumento de salida.MATLAB

Para evitar este error, especifique como 0 siempre que la función que llama no devuelva argumentos de salida.nargoutMATLAB

eng.eval("x = 4;",nargout=0) 

SyntaxError: sintaxis no válida

Llame a la función de 2,7 para imprimir una gráfica que cree con la función.MATLABprintPythonMATLABsurf

import matlab.engine eng = matlab.engine.start_matlab() eng.eval("surf(peaks)",nargout=0) eng.print("-djpeg","surf",nargout=0) 
  File "<stdin>", line 1     eng.print("-djpeg","surf",nargout=0)             ^ SyntaxError: invalid syntax 

Si y las funciones tienen el mismo nombre, el motor llama a la función.MATLABPythonMATLAB

Sin embargo, el motor no puede llamar directamente a una función que tiene un nombre que también es una palabra reservada en el idioma.MATLABPython Por ejemplo, en 2,7, es una palabra reservada.Pythonprint (En 3. x, el código anterior se ejecuta porque es una función incorporada, no una palabra reservada.)Pythonprint

Para evitar este error, llame a la función con.MATLABeval

eng.eval("print('-djpeg','surf');",nargout=0)

Si la función es una función que ha creado, puede renombrarla para que su nombre deje de ser una palabra reservada.MATLABPython La documentación enumera las palabras reservadas:Python

No se puede encontrar sesión enMATLABPython

Si invalida el sistema operativo o las variables de entorno, es posible que no pueda conectarse al motor para.TEMPTMPMATLABPythonMATLABPython Por ejemplo, si escribe lo siguiente en el símbolo del sistema:Python

matlab.engine.find_matlab()

Muestra.Python()

Engine para utiliza la carpeta temp para registrar información para sesiones compartidas.MATLABPythonMATLAB Para solucionar este problema, realice los siguientes cambios en las variables de entorno.Python temp_folder es la ruta de acceso a la carpeta en la que se ha establecido.MATLAB

os.environ['TMP'] = r'temp_folder'
os.environ['TEMP'] = r'temp_folder'
eng=matlab.engine.find_matlab() 

Temas relacionados