如何将matlab中多幅图合成为一幅图
1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。方法如下:
x1=10+5*rand(500,1);
x2=23+15*rand(500,1);
x3=38+20*rand(500,1);
2、下面,我们要分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行操作,分别用三个plot进行绘图,结果如下:
plot(x1,'r');
plot(x2,'b');
plot(x3,'g');
3、可以看到,图中只有一条曲线,并没有其他两条曲线。这是因为后面plot的语句画的图会将前面plot画的图覆盖掉。因此我们需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句hold on,即可将该图保留,使它不被后面的图所覆盖,具体语法如下:
plot(x1,'r');
hold on
plot(x2,'b');
hold on
plot(x3,'g');
4、这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色。
5、为了图的美观,我们可以用grid on添加网格线,还需要添加横纵坐标轴标题。方法如下:
xlabel('样本序列');
ylabel('值');
6、除此之外,因为我们画的是多条曲线,因此还需要添加图例,语法如下:
legend('变量1','变量2','变量3')
括号里面按照画图的顺序分别写每条曲线代表的意义即可。
7、最后这样就完成了。
代码:
>> subplot(2,2,1)
>> plot(-3:0.01:3,sin(-3:0.01:3))
>> subplot(2,2,2);
>> plot(-3:0.01:3,cos(-3:0.01:3))
>> subplot(2,2,3);
>> plot(-3:0.01:3,-3:0.01:3)
>> subplot(2,2,4);
>> plot(-3:0.01:3,(-3:0.01:3).^2)
结果:
然后在新建的figure中重新画。
不需要重新计算的。
怎么取呢
提取X Y Z
可以在必须在上图的状况下运行
x1=get(gco(gcf),'XData');y1=get(gco(gcf),'YData');z1=get(gco(gcf),'ZData');
得到你需要的值
同样的道理,分别取出其他的。
然后,直接画图
我的代码是,可以参考
h1=gcf;x1=get(gco(h1),'XData');y1=get(gco(h1),'YData');z1=get(gco(h1),'ZData');
h2=gcf;x2=get(gco(h2),'XData');y2=get(gco(h2),'YData');z2=get(gco(h2),'ZData');
h3=gcf;x3=get(gco(h3),'XData');y3=get(gco(h3),'YData');z3=get(gco(h3),'ZData');
h4=gcf;x4=get(gco(h4),'XData');y4=get(gco(h4),'YData');z4=get(gco(h4),'ZData');
figure(5);
subplot(221);mesh(x1,y1,z1);
subplot(222);mesh(x2,y2,z2);
subplot(223);mesh(x3,y3,z3);
subplot(224);mesh(x4,y4,z4);
最终成合成图
如果坐标单位相同的话,在画完第一个图后面加一条指令:hold on。