Функция MATLAB 'text' не работает с аргументом 'sprintf' - PullRequest
0 голосов
/ 14 января 2020

Попытка напечатать следующий диапазон меток на рисунке:

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[][][][]

За исключением того, что вместо скобок есть закрытые прямоугольники (я не смог скопировать символ).

Как я могу это исправить?

1 Ответ

1 голос
/ 14 января 2020

При обработке текста вы не удаляли расширение, вы вставляли пробелы. Вот некоторые идеи для демонстрации:

>> 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 не поддерживает его, и обратные пробелы определенно не подходят для go.

. Вместо этого используйте fileparts:

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

filepath =

  0×0 empty char array


name =

    'ca155'


ext =

    '.mat'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...