MATLAB: Underscore doesn’t work for step legend

legendplotplottingstepsubscriptunderscore

I'm trying to plot two step responses alongside with experimental results. Plot looks okay, but for some reason Matlab inserts a backslash before underscore for the step legend. How do I fix the legend?
\omega_{experimental} and \theta_{experimental} work
\omega_{modelo} and \theta_{modelo} don't
f2 = figure('DefaultAxesFontSize', 14);
plot(t_exp,omega_exp,'red');
hold on
plot(t_exp,theta_exp,'blue');
hold on
step(12*Go);
hold on
step(12*Gt);
title('Comparação do modelo obtido com a resposta experimental')
xlabel('Tempo (segundos)')
ylabel(' ')
legend({'$\omega_{experimental} (rad/s)$','$\theta_{experimental} (rad)$',...
'$\omega_{modelo} (rad/s)$','$\theta_{modelo} (rad)$'},...
'Interpreter','latex','Location','southeast','FontSize',16);
set(gca,'XLim',[0 1])
This is what I'm getting:
This is the backslash that Matlab inserts for some reason (seen by double-clicking the plot legend):
Full code is attached. Thanks in advance!

Best Answer

The escape character (\) is mistakenly added in legend() > setDisplayNames() even though the latex interpreter is correctly assigned. This evokes updateGroupInfo() which adds the escape character. Even if you assign the string to the DisplayName property prior to calling legend(), it immediately addes the escape character. However, the string is correctly assign in latex (or tex) format if the assignment is done after the legend is created. This is because you are only altering the legend string and therefore bypassing the updateGroupInfo() function.
Links to other threads in this forum that have revealed this problem with other plotting functions:
Given that, here are two work-arounds. Also see per isakson's solution below for a 3rd alternative.
Workaround 1
Call the legend twice.
% reproducible example
figure();
s = tf('s');
G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
T = feedback(ss(G),1);
step(T)
legend({'$\omega_{modelo} (rad/s)$'},...
'Interpreter','latex','Location','southeast','FontSize',16);
legend({'$\omega_{modelo} (rad/s)$'})
Workaround 2
Assign the DisplayName property after creating the legend.
figure
s = tf('s');
G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
T = feedback(ss(G),1);
step(T);
legend('Interpreter', 'latex')
axisObjs = get(gca, 'Children');
set(axisObjs(1), 'DisplayName', '$\omega_{modelo} (rad/s)$')