MATLAB Answers

How to use poly2list for specific variables?

3 views (last 30 days)
Dan Li
Dan Li on 30 Nov 2017
Edited: Karan Gill on 5 Dec 2017
Hi there,
In the example 2 of the help for 'poly2list' https://www.mathworks.com/help/symbolic/mupad_ref/poly2list.html?s_tid=srchtitle, it shows as follows:
In this example the polynomial is bivariate, thus exponent vectors are returned:
poly2list((x*(y + 1))^2, [x, y])
How to use this in MATLAB? I tried feval but it shows error:
>> syms x y
>> feval(symengine, 'poly2list', (x*(y + 1))^2, [x, y])
Error using mupadengine/feval (line 163)
The number of arguments is incorrect.
Thanks,
Dan

  0 Comments

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 30 Nov 2017
symLIST = @(varargin)feval(symengine,'DOM_LIST',varargin{:});
feval(symengine,'poly2list', (x*(y + 1))^2, symLIST(x,y))

  5 Comments

Show 2 older comments
Dan Li
Dan Li on 30 Nov 2017
Hi Walter,
Thanks for the help.
If I want to store the symbolic variables in a matrix first, how to convert it correctly? For example: X = [x, y], then symLIST(X) will not generate a list of x y but a matrix([[x, y]]). I tried feval(symengine, 'coerce', X, 'DOM_LIST'), but this still not work for the poly2list.
Walter Roberson
Walter Roberson on 30 Nov 2017
varcell = num2cell(X);
feval(symengine,'poly2list', (x*(y + 1))^2, symLIST(varcell{:}))
Dan Li
Dan Li on 30 Nov 2017
Thanks you very much! This really helps me a lot!

Sign in to comment.

More Answers (1)

Karan Gill
Karan Gill on 30 Nov 2017
Edited: Karan Gill on 5 Dec 2017
In general, I don't recommend using MuPAD commands, as the note at the top says.
Is coeffs helpful?
>> syms x y
p = (x*(y + 1))^2;
[C,T] = coeffs(p,[x y]) % C = coeffs, T = terms
C =
[ 1, 2, 1]
T =
[ x^2*y^2, x^2*y, x^2]

  1 Comment

Dan Li
Dan Li on 30 Nov 2017
I also want extract the power value of every variable in every monomial. Is there any way to convert the x^2*y^2 to [2, 2]?
Thanks,
Dan

Sign in to comment.