在线等!!!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上。
在线等求解……………………
跪谢………………………… 展开
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上。
在线等求解……………………
跪谢………………………… 展开
2个回答
展开全部
1. 请问你的图上最终要保留几组曲线?我理解是,对每组(Tc, Tm),都能解出两条曲线,这称为一组。
2. plot(t, X); 这一句话就可以同时绘制出同一组内的两条曲线,不必分开画。
3. 出于调试的方便,建议把legend那一段先去掉。
4. 如果没有特殊的必要,建议把所有曲线全部计算完毕后,再另起一个for循环画图。这样一边算一边画效率会比较低。
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们彼此完全重合。那么画出来也看起来只有一条线。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
2022-04-22
展开全部
可能title的位置错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询