在线等!!!matlab如何把for循环生成的数据画在一张图上

用matlabodesolver解了一组微分方程,想把两个因变量的结果绘制在一张图上。但hold不管写在哪里都hold不住。代码如下:forTc=2000:100:210... 用matlab ode solver解了一组微分方程,想把两个因变量的结果绘制在一张图上。但hold不管写在哪里都hold 不住。代码如下:

for Tc = 2000:100:2100
for Tm = 1900:50:1900
cons = 365 * 24 * 3600;

[t,X] = mainU(Tm,Tc); %这里是ode solver得到的,t是自变量时间,范围一直都是0~4.5亿年(换算成 % 秒),但是因为使用了ode solver所以t的step是matlab ode solver自己选的
% 对于不同的Tc 和Tm,t的step是不同的。但范围不变。

title('Upper & Lower Mantle Temp (K)');
plot(t, X(:,1),'-.','color','r','LineWidth',2);
hold on
plot(t, X(:,2),'-','color','b','LineWidth',2);
hold on

%下面是legend和坐标轴设定之类应该不影响

legend('Tu','Tc');
ylabel('Tu & Tc (K)');xlabel('Time (Ga)');
set(gca,'XTick',[0 (10^9*cons) (2*10^9*cons) (3*10^9*cons) (4*10^9*cons) (4.5*10^9*cons)]);
set(gca,'XTickLabel',{'4.5','4','3','2','1','0'});
end
hold on
end

上面的3个hold on都不管用,每次Tc或者Tm变化的时候都会画在一张新的figure上。
在线等求解……………………
跪谢…………………………
展开
 我来答
WM_THU
推荐于2017-12-15 · TA获得超过7163个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3847万
展开全部
1. 请问你的图上最终要保留几组曲线?我理解是,对每组(Tc, Tm),都能解出两条曲线,这称为一组。
2. plot(t, X); 这一句话就可以同时绘制出同一组内的两条曲线,不必分开画。
3. 出于调试的方便,建议把legend那一段先去掉。
4. 如果没有特殊的必要,建议把所有曲线全部计算完毕后,再另起一个for循环画图。这样一边算一边画效率会比较低。
更多追问追答
追问
for Tc = 2000:100:2100
for Tm = 1900:50:1900
[t,X] = mainU(Tm,Tc);
plot(t, X);
hold on
end
hold on
end
仍旧是每组(Tc,Tm)画出一个单独的图,因为是想看其他量变化时Tc Tm曲线整体的变化所以希望能把所有曲线画在同一图。不知是哪里出了问题?
追答
close all;
figure; hold on
for Tc = 2000:100:2100
    for Tm = 1900:50:1950
        [t,X] = mainU(Tm,Tc);
        plot(t, X);
    end
end
hold off

另外还有一种可能,X们彼此完全重合。那么画出来也看起来只有一条线。

匿名用户
2022-04-22
展开全部
可能title的位置错了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式