I have a problem while running syms in matlab because of python doesn't support it

6 visualizzazioni (ultimi 30 giorni)
Hi, I'm a beginner of matlab.
I"m currently working on a matlab code using refprop and I should use python library to link refprop to the Matlab
(like this: py.ctREFPROP.ctREFPROP.REFPROPFunctionLibrary('C:\Program Files (x86)\REFPROP'))
and I use syms in the middle of the code but I have an error that says "conversion of MATLAB 'sym' to Python is not supported"
and I guess this is becuase of the python library.
Is there any way to use symbolic math toolbox under this situation? or can I use python math toolbox(I guess it is Sympy, am I right?) in Matlab instead of symbolic math toolbox from Mathworks?
I would really appreciate if you help me

Risposte (1)

Divyam
Divyam il 2 Mag 2025
You cannot use the Symbolic Math Toolbox and the Python Libraries together directly as while using the Symbolic Math Toolbox, MATLAB utilizes symbolic variables for calculations that cannot be interpreted by Python functions.
To avoid this issue, you need to provide numeric values to the Python functions by performing symbolic calculations in MATLAB and then converting them to numeric values before passing them to Python.
syms x
expr = x^2 + 2*x + 1;
val = subs(expr, x, 3); % Substitute x=3
% val_num = double(val); % Convert symbolic to numerical value double
% Now pass val_num to Python
pyFuncResult = py.yourFunction(val_num);
Another alternative as mentioned in the question is using the 'sympy' library. However to use the results from the Python object created using 'sympy', you would need to convert the result to string so that it can be used in MATLAB.
For more information regarding importing symbolic expressions from Python to MATLAB, refer to the following MATLAB Answer: https://www.mathworks.com/matlabcentral/answers/597118-how-to-import-symbolic-expressions-from-python-to-matlab

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by