matlab如何把for循环生成的数据画在一张图上用matlab ode solver解了一组微分方程,想把两个因变量的结果绘制在一张图上.但hold不管写在哪里都hold 不住.代码如下:for Tc = 2000:100:2100for Tm = 1900:50:19
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/18 16:20:27
matlab如何把for循环生成的数据画在一张图上用matlab ode solver解了一组微分方程,想把两个因变量的结果绘制在一张图上.但hold不管写在哪里都hold 不住.代码如下:for Tc = 2000:100:2100for Tm = 1900:50:19
matlab如何把for循环生成的数据画在一张图上
用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上.
在线等求解……………………
跪谢…………………………
matlab如何把for循环生成的数据画在一张图上用matlab ode solver解了一组微分方程,想把两个因变量的结果绘制在一张图上.但hold不管写在哪里都hold 不住.代码如下:for Tc = 2000:100:2100for Tm = 1900:50:19
1.请问你的图上最终要保留几组曲线?我理解是,对每组(Tc,Tm),都能解出两条曲线,这称为一组.
2.plot(t,X); 这一句话就可以同时绘制出同一组内的两条曲线,不必分开画.
3.出于调试的方便,建议把legend那一段先去掉.
4.如果没有特殊的必要,建议把所有曲线全部计算完毕后,再另起一个for循环画图.这样一边算一边画效率会比较低.