簡體   English   中英

Matlab圖例自動化

[英]Matlab plot legend automation

我正在求解一個依賴於x和t的pde,並希望針對t的幾個值顯示所有x的解。 我正在嘗試編寫將自動為該圖生成圖例的代碼。 例如,如果要在t = 0、1、5和9處繪制解,則希望圖例顯示“ t = 0”,“ t = 1”,依此類推。

假設我的解決方案保存在矩陣u中。 我的時間保存在向量t中。 我采樣的時間的索引將在向量tsampled中。 請注意,這與我在情節上想要的時間不同。 如果我花時間在向量t的索引6上,則該值不是6,而是任何值。

我目前正在嘗試通過以下方式做到這一點:

tlen = max(size(t));
tsampled = [2, floor(tlen/5), floor(2*tlen/5), floor(3*tlen/5), floor(4*tlen/5), floor(tlen)];
t(tsampled)
legnd = {'', '', '', '', '', ''};
hold on
for i = 1:1:size(tsampled) 
plot(x,u(tsampled(i),:))
legnd(i) = sprintf('t = %0.2f s \n', t(tsampled(i)));
end
title('my PDE solution');
legend(legnd, 0);
xlabel('x')
ylabel('u')
hold off

但這會產生錯誤“無法從char轉換為單元格”。

當我改為嘗試使用該行時:

legend (sprintf('t = %0.2f s \n', t(tsampled)))

我在圖表上得到正確的“字符串”,但是它們的格式如下: 在此處輸入圖片說明

我希望在藍線旁邊顯示“ t = 10.20 s”,在橙線旁邊顯示“ t = 91.84 s”,依此類推。 我如何獲得想要的結果?

由於您將legnd預定義為單元格數組,因此需要使用{}而不是()來獲取正確的索引。 嘗試:

legnd{i} = sprintf('t = %0.2f s \n', t(tsampled(i)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM