5

我正在尝试写一个简单的平面方程加上系数 \bar{a}_1、a_2 和 a_3 的值,但我无法让 \bar 工作。有什么建议吗?我尝试了带或不带美元的 $\bar{a}_{1}$,其他一切对我来说都很好,我使用了乳胶或 tex 解释器,但它无法识别它。这是代码:

a1=1
a2=2
a3=3
str = {'LLSQ fit:','z=$\bar{a}_{1}$+a_2x+a_3y',sprintf('$\bar{a}_{1}$=%5.2f',a1),sprintf('a_2=%5.2f',a2),sprintf('a_3=%5.2f',a3)};
annH = annotation('textbox',[0.63 0.8 0.08 0.08],'string',str,'interpreter','latex')
set(annH,'FitBoxToText','on','fontsize', 18,'BackgroundColor',[1 1 1])  

谢谢

4

1 回答 1

5

我在下面列出了您的代码存在的问题,这是一个工作代码:

str = {'LLSQ fit: ' ...
    'z = $\bar{a}_{1}$ + $a_2x$ + $a_3y$' ...
    ['$\bar{a}_{1}$ = ' sprintf('%5.2f', a1)] ...
    ['$a_2$ = ' sprintf('%5.2f', a2)] ...
    ['$a_3$ = ' sprintf('%5.2f', a3)]};

annotation('textbox', [0.5 0.8 0.3 0.08], 'interpreter','latex', 'String', str);

原始代码的问题

  1. 您必须用符号包装整个latex 命令:$

    此代码没有提供所需的输出:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', 'a_2x');
    

    但是这个可以:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', '$a_2x$');
    
  2. 如果你使用它,你会丢失字符串的一部分,sprintf因为它有另一个解释器(有解决方法,但我建议像上面那样连接字符串)

    sprintf('$\bar{a}_{1}$ = %5.2f', a1)
    

    将返回:

    ar{a}_{1}$ = 1.00
    

    这不被latex. (\b被解释为退格键sprintf删除生命$体征。)

于 2013-06-15T02:00:39.330 回答