Matlab图中注释文本框中的Overbar(使用Latex作为解释器)

时间:2013-06-15 00:31:16

标签: matlab latex

我正在尝试写一个简单的平面方程加上系数\ 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])  

感谢

1 个答案:

答案 0 :(得分: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无法识别。 (\bsprintf中被解释为退格,并删除了重要的$符号。)