# How to create a string that depends on user input variables?

19 views (last 30 days)
Joseph Wales on 28 Apr 2018
Commented: Rik on 1 Mar 2021
Hi,
I am currently writing a script in which data collected from a separate file is used to plot curve fits.
I also need to include the equation used for the curve fit on the plot.
I encountered an issue when attempting to do this with a general polynomial, as the degree of the polynomial is decided by the user.
A shortened version of my code is this:
x = data(:,1);
y = data(:,2);
d = input('To what degree would you like your polynomial?');
p = polyfit(x,y,d);
yfit = polyval(p,x);
plot(x,y,'bo',x,yfit,'r--')
I need a way to create a string that is the correct form of the equation of the polynomial so that it can be properly displayed on the plot.
For example, if the user chooses degree 2, I need to display the equation "p(1)*x^2 + p(2)*x + p(3)" on the plot.
Is there a way to do this for any value of degree?
Any help is appreciated, thanks.

Rik on 28 Feb 2021
You can create this text with sprintf and some minor tweaks:
str=sprintf('p(%d)*x^%d +', [1:d;(d-1):-1:0]);
str=strrep(str,'^1','');
str=strrep(str,'x^0 + ','');
Rik on 1 Mar 2021
@培林 王 is this what you needed?

Siyu Guo on 28 Apr 2018
Try poly2str function. For example, s = poly2str(p, 'x').

Well, I can't use this function now and I didn't find it in the toolbx. what's the problem?