【问题标题】:MATLAB 'text' function not working with 'sprintf' argumentMATLAB 'text' 函数不能与 'sprintf' 参数一起使用
【发布时间】:2020-05-01 14:04:00
【问题描述】:

尝试在图中打印以下范围的标签:

aux = {'ca155.mat','ca154.mat','ca159.mat','ca146.mat','ca148.mat','ca004.mat'};

但我需要它大写并且没有扩展名,所以我使用

text(0,0,upper(sprintf([aux{i},'\b\b\b\b'])));

在命令窗口中,我得到了正确的输出,例如i=1,即CA155。但是图形上的文本功能不起作用并产生:

CA155.MAT[][][][]

除了括号之外,还有闭合的矩形(我无法复制字符)。

我该如何解决这个问题?

【问题讨论】:

  • 与其生成一个删除命令窗口中的前一个字符的字符,为什么不直接从数组中删除这些字符呢? aux{1}(1:end-4) 删除字符串的最后 4 个字符。

标签: matlab printf


【解决方案1】:

处理文本时,您没有删除扩展名,而是插入了退格键。这里有一些用于演示的见解:

>> x=upper(sprintf([aux{i},'\b\b\b\b']))

x =

    'CA155'

>> size(x)

ans =

     1    13

>> x(1:9)

ans =

    'CA155.MAT'

>> x(1:10)

ans =

    'CA155.MA'

前 9 个字符仍然存在,但在命令窗口中工作时,后面的退格会删除它们。貌似text不支持,退格绝对不是办法。

改用fileparts

>> [filepath,name,ext]=fileparts(aux{i})

filepath =

  0×0 empty char array


name =

    'ca155'


ext =

    '.mat'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2021-06-25
    • 1970-01-01
    • 2013-01-03
    • 2014-04-20
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多