How do you print an anonymous function properly in a figure title?

I am trying to print an anonymous function as part of a title for a plot. I would like it to look like a latex entry where but we get f(x)=@(x)x.^2 instead.
I have provided a MWE below;
f=@(x) x.^2
x_coordinates=[1:10]
fx=f(x_coordinates)
plot(x_coordinates,fx)
title(sprintf('The Evolution of the Heat Equation with Source f(x)=%s', func2str(f)))

2 commentaires

Many thanks for your comment, but this does not wokr for a function handle - is there anything that would do this job?

Connectez-vous pour commenter.

 Réponse acceptée

You could do it by manipulating the equation of the function alone and then adding it to the remaining text:
f=@(x) x.^2
x_coordinates=[1:10]
fx=f(x_coordinates)
plot(x_coordinates,fx)
eqn = func2str(f);%changes to a char array
eqn2 = eqn(5:end);%removes the '@(x) handle
eqn3 = replace(eqn2,'.','') %removes the . used for multiplication
placeholder1 = "The Evolution of the Heat Equation with Source $f(x)=" + string(eqn3+ "$")
title(placeholder1,'Interpreter','latex')
Not sure if this works for all equations.

2 commentaires

Thank you for this - yes it works for this particular case. The issue now would be if there is a decimal present as a scaling.
I have now found a way to remove certain parts of the string without losing others - we would use something like this,
eqn = func2str(fu);%changes to a char array
eqn2 = eqn(5:end);%removes the '@(x) handle
eqn2=strrep(eqn2,'.*','')
eqn3=strrep(eqn2,'.^','^')
eqn3=strrep(eqn2,'./','/')
Many thanks for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by