如何在MATLAB中改变图例的显示格式

How to change display format of legend in MATLAB

我正在寻找一种方法来强制采用特定格式的图例条目。我遵循代码,它们显示为

相反,我希望它像 1e-1,1e-2,1e-3,1e-4, 1e-5。 有没有办法做到这一点。

MWE:

sig=[0.1 0.01 0.001 0.0001 0.00001];
for j=1:length(sig)
    for x=1:10
       Cost(j,x) = 2*x+j;
    end 
plot(1:10,Cost(j,:));
end 
legend(strcat('\sigma^2_n=',num2str((sig)')));
set(h,'Interpreter','latex')

您应该通过将 custom format specifier 传递给 num2str

来指定在将 sig 转换为字符串时使用科学记数法
legend(strcat('\sigma^2_n=',num2str(sig.', '%.0e')));

如果要去掉指数中的前导0,可以用正则表达式去掉

S = regexprep(cellstr(num2str(sig.', '%.0e')), '(?<=e[-+])0*', '');
legend(strcat('\sigma^2_n=', S))