Ось именования фигур Matlab в зависимости от индексов: ошибка при использовании $ \ Phi $ - PullRequest
0 голосов
/ 07 августа 2020

У меня возникают некоторые проблемы с изменением имен осей некоторых фигур Matlab в зависимости от некоторых предопределенных индексов.

Рассмотрим следующий код:

clear
rng default
Phi{1,1}=randn(3,1);
Phi{1,2}=randn(3,1);
Phi{2,1}=randn(3,1);
Phi{2,2}=randn(3,1);

Предположим, я хочу построить график Phi{i,k} по сравнению с Phi{j,h} для различных i,k,j,h, а затем назвать ось $ \ Phi_ {ik} $ и $ \ Phi_ {jh} $ , соответственно (на латексном языке).

Я пробовал следующее

    i=1; 
    k=2;
    j=2;
    h=1;
    figure
    scatter(Phi{i,k}, Phi{j,h}, 100,'k', 'filled')
    xlabel(sprintf('\Phi_{%i%k}',i,k),'FontSize', 25) 
    ylabel(sprintf('\Phi_{%j%h}',j,h),'FontSize', 25)

Я получаю сообщение об ошибке: Warning: Escaped character '\P' is not valid. Не могли бы вы посоветовать, как я могу это исправить?

Если не использую sprintf все работает нормально:

figure
scatter(Phi{i,k}, Phi{j,h}, 100,'k', 'filled')
xlabel('\Phi_{12}','FontSize', 25) 
ylabel('\Phi_{21}','FontSize', 25)

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Когда вы используете sprintf, вы должны защищать буквальные \ символы, чтобы sprintf не думал, что вы пытаетесь использовать «специальный символ» (как указано в этом, сделайте c страница). По сути, в спецификаторе формата sprintf (т.е. первом аргументе) буквальные символы \ необходимо удвоить, например:

i = 7; k = 3;
xlabel(sprintf('\\Phi_{%d%d}', i, k))
0 голосов
/ 07 августа 2020

Другой способ сделать это - просто объединить строки:

 xlabel(['\Phi_{',num2str(i),num2str(k),'}'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...