matlab如何把for循环生成的数据画在一张图上
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/20 21:30:08
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 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上.
在线等求解……………………
跪谢…………………………
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们彼此完全重合。那么画出来也看起来只有一条线。
再问: 感谢,已经解决了。非常感谢!
再答: 祝贺~
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们彼此完全重合。那么画出来也看起来只有一条线。
再问: 感谢,已经解决了。非常感谢!
再答: 祝贺~
matlab如何把for循环生成的数据画在一张图上
matlab怎么样把两组数据画在一张图上?
matlab 有多组数据 画在一张图上 连续平滑
MATLAB高手进来,如何把多个函数画在一张图上?
MATLAB用plot拟合数据~我现在有三组数据,x是一样的就y不一样,然后想把三条曲线拟合在一张图上~
matlab中用for循环生成的n个单个数据怎么放入一个矩阵里,我用一个for循环做了个条件,得出1或0的结果,想把他们
matlab如何把算出来的数据生成一个若干行若干列的新矩阵啊
matlab for循环语句如何实现对不同数据进行命名
用matlab怎么把直方图和拟合的概率密度分布图放在一张图上
在origin中如何把不同数量级的两条曲线画在一张图上?
求matlab大侠,for循环过程保存数据矩阵问题
如何在MATLAB中从一组数据中把非零的数找出来