繁体   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