MATLAB: How to write in legend function

plot

I want to write the function in the legend ,automtaic for exmaple :
n=0:10e3;
f=(log2(n)).^2;
c_gn=10*((log2(n)).^2);
plot(n,f,n,c_gn);
legend('(log2(n)).^2','10*((log2(n)).^2');
I want that in the leged to change aoutomtacli every time I change f or c_gn and not the expression of the vaule manually in the legend . how to do it ?

Best Answer

n = 0:10e3;
f_fun = @(n) (log2(n)).^2;
c_gn_fun = @(n) 10*((log2(n)).^2);
f_legend = regexprep(func2str(f_fun), '^.*?)', '');
c_gn_legend = regexprep(func2str(c_gn_fun), '^.*?)', '');
f = f_fun(n);
c_gn = c_gn_fun(n);
plot(n, f, n, c_gn);
legend({f_legend, c_gn_legend});