【问题标题】:Display sprintf text in uicontrol text MATLAB在 uicontrol 文本 MATLAB 中显示 sprintf 文本
【发布时间】:2014-08-15 16:04:53
【问题描述】:

这看起来应该很简单。我有一个样式文本的 uicontrol:

x_text = uicontrol(f,'Style','text','String','X: ','Position', [10 220 50 20], 'HorizontalAlign','Left','FontName','Monospace','FontSize',12);

稍后,我尝试将文本更改为包含一个数字。我尝试了几种方法,但每当我尝试使用格式时,它都会失败。例如

作品

set(x_text, 'String', ['X: ' num2str(State(1))]);

失败

set(x_text, 'String', ['X: ' num2str(State(1),'%0.3f')]);
set(x_text, 'String', ['X: ' sprintf('%0.3f',State(1))]);

您可能已经猜到了,我想要的是设置小数点右侧的位数,就像我在上面所做的那样。我在这里遗漏了什么吗?

谢谢

【问题讨论】:

  • 错误信息是什么?

标签: matlab user-interface uicontrol


【解决方案1】:

写两行怎么样?

numStr=num2str(State(1),'%0.3f');
set(x_text, 'String', ['X: ',numStr]);

【讨论】:

    【解决方案2】:

    使用矩阵表示法连接字符串,例如:[string1 string2] (或使用strcatroutine btw) 在我看来是非常危险的,并且经常导致“奇怪”的行为。

    希望始终只使用sprintf

    txt = sprintf('X: %0.3f', State(1));
    set(x_text, 'String', txt);
    

    或单行:

    set(x_text, 'String', sprintf('X: %0.3f', State(1)));
    

    【讨论】:

      【解决方案3】:

      我尝试过的所有合理建议和事情。事实证明,它就像制作格式 '%#.3f' 一样简单,其中 # 大于 0;即 # 定义了可显示字符的最大数量,因此它显示了 0 个字符。例如,我将其更改为“%5.3f”,它运行良好。

      感谢您的建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多