在线等!!!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上。
在线等求解……………………
跪谢…………………………

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们彼此完全重合。那么画出来也看起来只有一条线。

追问

感谢,已经解决了。非常感谢!

追答

祝贺~

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-04-22
可能title的位置错了?

在线等!!!matlab如何把for循环生成的数据画在一张图上
2. plot(t, X); 这一句话就可以同时绘制出同一组内的两条曲线,不必分开画。3. 出于调试的方便,建议把legend那一段先去掉。4. 如果没有特殊的必要,建议把所有曲线全部计算完毕后,再另起一个for循环画图。这样一边算一边画效率会比较低。

matlab 如何将多个结果放在一个图里显示,进行比较
可以将 plot() 放入for loop 里面, 然后 plot() 后面加 hold on。这样每一次进入for loop,先更新theta数值,再更新xout 数值,然后将更新后的xout 绘出。figure(1) 让每一次更新的图像都显示在同一个窗口中。加pause 可以在每一次运行完for 之后暂停程序。如下:for theta=0:0.00013:32*pi\/...

matlab,怎么把循环语句中的多条曲线画在一副图中。
x=linspace(-pi,pi);hold onfor n=1:3 plot(x,sin(n*x));end

如何用MATLAB把这两个函数画在一个图上?
1、首先打开matlab软件,然后新建一个m文件,如下图所示。2、然后在新建的m文件里面输入常量和变量,如下图所示,变量一般用x来表示。3、接着建立一个for...end循环指令用来产生一段曲线的数据,并且在for循环里面插入两个需要分段的if...end判断指令。4、接着在输入画二维图形的指令plot函数即可,因...

matlab如何在循环中吧循环次数写在图片上?
Pt比Pb、Ne少了一个的初值,你试一下,看可以不:clc,clear,close all syms Rm Pb Rb;Rm=input('燃料量:');Ut=input('阀门开度:');Pb(1)=16.7;Ne(1)=313.22;Rb(1)=47.12;t=input('计算时间(s):');for i=2:1:18;Rb(1)=(-1*Rb(1)+Rm)\/120*(i+1-i)+Rb(1);en...

如何将Matlab中循环生成的图画在一张图上
n = 5;t = 0:0.05:2*pi;for k = 1:n x = k*sin(t); y = k*cos(t).*x; plot(x,y); hold on % 保持同一绘画框end

MATLAB中如何将利用循环等式产生的中间值存储到一个矩阵中,最后会用这...
1、把新的结果存在下标为end+1的位置,数组会自动扩展,例如:A=[]; for i=1:10, A(end+1)=i^2; end 2、预置数组(一般使用zeros),并设置一个计数器标记数组当前的存储位置,然后用该计数器作为下标进行存储。例如:A=zeros(10000,1); idx=0; while idx<10000, idx=idx+1; A(idx)...

matlab 如何将每次循环中筛选出的数字一一储存,最后集体一起plot?
你先设一个X数组 然后:j=1 for n=1:k if c(n)==1 x(j)=n j=j+1 else n=n+1 end m=j 然后符合条件都在X数组内

matlab for循环画图
for循环流程图 执行过程为:求解表达式1;求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步;求解表达式3;转回上面第2步继续执行;循环结束,执行 for 语句下面的语句。执行过程中,“表达式1”只执行一次,循环是在“表达式2”“...

matlab将循环产生的数据依次存到一个数组里
1、打开软件后,进行新m创建,创建打开编辑界面后,先将此文件进行保存,如下图,这里在新建的文件中,进行编程和运行。2、键入下图程序,运行可得到结果,使用语句进行界面清空,其中i作为变量,对于图中格式,表示每隔一个取一次只,从a的结果,即可看到i的取值情况。3、这里加入2这一控制参数后,i将...

相似回答