How to import symbolic expressions from Python to MATLAB?
42 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sayan Batabyal
el 21 de Sept. de 2020
Comentada: Benedikt
el 30 de Ag. de 2023
One of my colleagues is using Python(more specifically SymPy) to generate a very big symbolic expression. Now, I want to perform some numerical computations on the expression in MATLAB. How can I export the expression from Python and import it in MATLAB?
0 comentarios
Respuesta aceptada
Michael Croucher
el 27 de Sept. de 2020
Editada: Michael Croucher
el 27 de Sept. de 2020
Imagine your friend had a Python function that created that expression. Let's call it create_symbolic_expression() and put it into a file sympy_demo.py. My demonstration is likely to be more simple than the one you have in mind.
sympy_demo.py also contains a function that lambdify's this symbolic expression..that is, it creates a Python function in the variables x,y and z.
%This is the contents of sympy_demo.py
from sympy import lambdify
from sympy.abc import x,y,z
def create_symbolic_expression():
'''
This is a proxy for whatever code your friend has written but I'll keep it simple for this demo.
'''
expr = x+y+z
return(x+y+z)
def lambdify_expression(expr):
return(lambdify([x,y,z],expr))
We can now go to MATLAB, ensure sympy_demo.py is on your path and do
import py.sympy_demo.create_symbolic_expression
import py.sympy_demo.lambdify_expression
expr = create_symbolic_expression() %This is a Python object in MATLAB that represents the symbolic expression
myfunc = lambdify_expression(expr) %Turn it into a Python function that can be evaluated in MATLAB
We can now evaluate myfunc with numeric inputs
myfunc(1,2,3)
ans =
6
2 comentarios
Benedikt
el 30 de Ag. de 2023
The % character in sympy_demo.py produces an error. Use # for python comment.
Más respuestas (0)
Ver también
Categorías
Más información sobre Call Python from MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!