How to find degree of polynomial in Matlab?

Dear All, Good day! I am trying to find the degree of polynomial in MATLAB. I know it is possible in MuPAD by using degree(p). But couldn't find a way by using editor. Kindly help me on this. Thanks

2 Comments

How is the polynomial represented ?
Actually I want to compare the nominator and denominator degree and depending on that I have to take some decision. Here is the small code that shows the z(p) Rational polynomial (RP). I put limit on that to get new RP. Now I want to compare the degree of num and den of znew(p). How I can extract the degree?
clc;
close all;
clear all;
syms p
z(p)=(2*p^4+5*p^2+1)/(p^3+p);
a=limit(z(p)/p, p, inf);
z1(p)=z(p)-a*p;
Znew=simplify(z1(p));
[num,den] = numden(Znew);

Sign in to comment.

 Accepted Answer

In the case you use, where you are working with ratios of symbolic polynomials, then
degree_num = length(coeffs(num,p)) - 1;
degree_den = length(coeffs(den,p)) - 1;
You can also simplify (at least logically) the taking of the limit:
[n, d] = numden(z(p));
coeffn = coeffs(n,p);
coeffd = coeffs(d,p);
lenn = length(coeffn);
lend = length(coeffd);
if lenn > lend + 1
error('limit would have been infinite')
elseif lenn <= lend
error('limit would have been zero');
else
a = coeffn(end);
end
If you are sure that neither of the two exception cases can occur, then
t = coeff(numden(z(p)));
a = t(end);

3 Comments

Thanks Walter. The idea you provided here is only valid when the polynomials dont miss any power, e.g. p^3+p^2+p+1. In this case we got 4 coefficients and from there we extract the degree. But if one or more powers are zero, then we cannot use coeffs() to extract the degree of polynomial. e.g. p^3+1. Kindly comment on this?
You could use sym2poly() . Again length() - 1 for degree, but the first entry of the matrix instead of the last entry for the highest coefficient.
Thanks alot mate. Have a good day. :)

Sign in to comment.

More Answers (2)

The Matlab Spot
The Matlab Spot on 30 Dec 2013
Edited: The Matlab Spot on 30 Dec 2013
See if polyval helps

1 Comment

We cannot find degree of poly. using polyval().

Sign in to comment.

Suppose you evaluate your polynomial, P(x), at a large number of equally-spaced values of x. Then if diff(P,n) exhibits a non-zero constant value (except of course for small round-off errors,) you can conclude that P has degree n. Moreover, that constant value is indicative of the coefficient of the highest degree term.
I would think however, that an inspection of whatever process is creating your polynomial should more easily tell you its degree.

Asked:

on 30 Dec 2013

Commented:

on 30 Dec 2013

Community Treasure Hunt

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

Start Hunting!