matlab 曲线图合并问题

作者&投稿:王花 (若有异议请与网页底部的电邮联系)
求MATLAB的高手,怎么把两张仿真曲线合并显示在一张图上?~

既然小编提到我了,我就好好看了一下程序,因为不确定画的其他图像是否有用,所以没删。最后一张图满足要求,修改如下:
a=[0 1.0000 0 0;0 -0.1818 2.6727 0;0 0 0 1.0000;0 -0.4545 31.1818 0];b=[0;1.8182;0;4.5455];c=[1 0 0 0;0 0 1 0];d=[0;0];%Check the controllabilitydisp('The rank of controllability matrix')rc=rank(ctrb(a,b))%Designp=[-7.4527+9.666j,-7.4527-9.666j ,-3.1538+1.8334j, -3.1538-1.8334j]k=acker(a,b,p),x0=[0.2,0,0,0]%The close loop state system is denoted as (ac,b,c,d)ac=[a-b*k ];t=0:0.005:3;figureinitial(ac,b,c,d,x0,t)title(' initial respond of inverted pendulum system ')xlabel('Sec')ylabel('Output y=x3')figure[y,x,t]=initial(ac,b,c,d,x0,t);plot(t,x,'y')figure,x1=[1 0 0 0]*x',plot(t,x1);grid;title('x1的响应曲线')T=t;X1=x1; % 后面用a=[0 1.0000 0 0;0 -0.1818 2.6727 0;0 0 0 1.0000;0 -0.4545 31.1818 0];b=[0;1.8182;0;4.5455];c=[1 0 0 0;0 0 1 0];d=[0;0];eig(a)Qc=ctrb(a,b);Rc=rank(Qc)if (Rc==4) disp('状态完全能控')else disp('状态不完全能控')endQo=obsv(a,c);Ro=rank(Qo)if( Ro==4) disp('状态完全能观测')else disp('状态不完全能观测')endQ=[25 0 0 0;0 0 0 0;0 0 81 0;0 0 0 0];R=1;K=lqr(a,b,Q,R);x0=[0.2,0,0,0];ac=[(a-b*K)];bc=[b];cc=[c];dc=[d];[K,P,e]=lqr(a,b,Q,R),t=0:0.005:7;figure initial(ac,b,c,d,x0)title('step respond of inverted pendulum system ')xlabel('Sec')ylabel('Output y=x3')figure[y,x,t]=initial(ac,bc,cc,dc,x0,t);plot(t,x,'y')figure,x1=[1 0 0 0]*x',hold onplot(T,X1,'r');plot(t,x1);grid;title('x1的响应曲线')legend 程序1的响应曲线 程序2的响应曲线两张图时间轴不一般长,但能画。需要的就是最后一张图,如下:

首先,根据数据,将curvefitting拟合出函数表达式,记录下来。
然后,根据x1的数据,求出y1(第一个,拟合函数,y1=f(x1)),再根据x2的数据,求出y2(第二个,拟合函数,y2=f(x2))
最后,用绘图命令,绘出二条拟合函数曲线。plot(x1,y1,x2,y2)

比较简单的做法:
1、首先,把两个fig都打开;
2、在一个图中选择曲线并复制(方法:按工具条上Edit plot 按钮,然后选择曲线,点右键选copy)。
3、把曲线贴到另一个figure中(同样按下Edit plot 按钮,然后右键选paste)。
4、根据需要加legend。

如果要处理的图数量比较多,希望通过程序自动操作,可以下面的程序:
http://zhidao.baidu.com/question/522884326.html
那是我以前回答另一提问编的,比你现在这个要求复杂很多,你可以自己改一改,有问题再说。

给你提供一个办法。具体过程如下:
1.假设你的文件名称为A.fig,B.fig。
2.使用打开函数,A=open('A.fig');B=open('B.fig');
3.使用句柄操作取得A中的关于绘图的数据,也就是plot(x,y)中的x,y。
4.关闭A.fig,同时将A中的数据写入B图中。

具体代码如下:
A=open('A.fig');B=open('B.fig');
AXData=get(get(get(A,'CurrentAxes'),'Children'),'XData');
AYData=get(get(get(A,'CurrentAxes'),'Children'),'YData');
close(A);
clear A;
set(get(B,'CurrentAxes'),'nextplot','add');
plot(get(B,'CurrentAxes'),AXData,AYData,'r');

亲自测试,有效。

该代码,使用了图形句柄操作,可以查阅matlab相关的教程。过程不难。

最笨的方法:请使用PHOTOSHOP 打开两个文件,然后把一个文件拖拽到另一个文件上,两副图就重叠了,然后根据自己的需要调整,之后另保存为自己需要的格式,默认是PDF格式


兖州市19352003991: 在matlab中怎么将几条拟合好的曲线放在同一个图中? -
肇克谷正: 在matlab中将几条拟合好的曲线放在同一个图中的方法是: 老版本的cftool可以直接点击“newfit” 导入数据并在同一幅图里拟合,如果你的matlab比较新,就用 cftool-v1 打开老版本的cftool.MATLAB的介绍是: MATLAB是matrix&laboratory两...

兖州市19352003991: matlab 曲线图合并问题 -
肇克谷正: 比较简单的做法: 1、首先,把两个fig都打开; 2、在一个图中选择曲线并复制(方法:按工具条上Edit plot 按钮,然后选择曲线,点右键选copy). 3、把曲线贴到另一个figure中(同样按下Edit plot 按钮,然后右键选paste). 4、根据需要加legend.如果要处理的图数量比较多,希望通过程序自动操作,可以下面的程序: http://zhidao.baidu.com/question/522884326.html 那是我以前回答另一提问编的,比你现在这个要求复杂很多,你可以自己改一改,有问题再说.

兖州市19352003991: matlab: 怎样将多幅曲线图叠加得到一副新的曲线图 -
肇克谷正: 例如你要将sinx,cosx,sinxcosx三幅图画在一起.比较简单的可以用excel; 用matlab的话,方法一见下: >>x=0:0.01:2*pi; >>y1=sin(x);y2=cos(x);y3=sin(x).*cos(x); >>plot(x,y1,'*-',x,y2,'o-',x,y3,'.-') 如果采用hold on命令和hold off命令的话,如下: >...

兖州市19352003991: 用matlab实现多条曲线叠加(叠加成一条),具体问题看补充,求程序或方法.在线急等. -
肇克谷正: 最简化的就是C总=(1/2)C(t)+(1/2)C(t-1/3)u_(1/3)(t)+(1/2)C(t-2/3)u_(2/3)(t)+(1/2)C(t-3/...

兖州市19352003991: matlab仿真出的曲线如何拟和在一起 -
肇克谷正: 使用hold on命令 举例:x1=0:0.1:5; y1=3*x1; plot(x1,y1) hold on x2=0:0.1:5; y2=sqrt(x2); plot(x2,y2)

兖州市19352003991: 如何用MATLAB对二组数据同时进行曲线拟合 -
肇克谷正: 1、首先打开电脑上的“matlab”软件,在命令行输入x=0:2*pi/8:2*pi确定x的取值,使用y=sin(x)产生正弦函数的数值,使用x和y的数据进行拟合,方便验证拟合结果. 2、接着在命令行输入cftool,打开matlab自带的曲线拟合工具箱. 3、曲线拟合工具箱的界面如下图所示,方框处可以选择拟合的数据. 4、选择自变量为x,因变量为y,接下来点击方框处选择拟合方法,可以根据自己的需要选择,此处点击“sum of sine”进行正弦曲线拟合. 5、选择拟合方法后,系统会自动对数据进行拟合,拟合结果如方框处所示.

兖州市19352003991: 如何用matlab编程实现一组数据的曲线拟合 -
肇克谷正: x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];p=fittype('a*x.^0.5+b*lnx+c','independent','x')f=fit(x,y,p)plot(f,x,y);上面是代码!下面是结果:a=2.818b=0.8552c=-0.6627

兖州市19352003991: MATLAB中在一个图上怎样进行多条曲线的拟合? -
肇克谷正: >> x=0:pi/5:2*pi; >> y=sin(x); >> plot(x,y,'-*') %取y=sin(x)的几个数据点,画出来. >> hold on; >> p=polyfit(x,y,5) %把这些点拟合成5次多项式,p是多项式的系数. p = -0.0055 0.0862 -0.3878 0.2503 0.9018 0.0010 >> x1=0:pi/50:2*pi; %然后在拟合多项式上取很多点,把拟合线画出来. >> y1=polyval(p,x1); >> plot(x1,y1,'r'); >> 用hold on 把两条线显示在一个图中.

兖州市19352003991: matlab如何实现曲线拟合 -
肇克谷正: 用matlab如何实现曲线拟合呢?可以按照下列步骤进行:1、数据.数据必须有因变量y和自变量x1,x2,x3,...,且数据是等长的.2、模型.根据经验自定义模型函数和已知模型函数.3、如函数是线性的,可以使用regress()函数,如函数是非线性的,可以使用nlinfit()函数或lsqcurvefit()函数等,求出模型的拟合系数.4、根据y数据(已知值)和yn数据(拟合值),计算其相关性(决定系数)及其置信度.关于这方面的内容,在里有很多例子.

兖州市19352003991: Matlab 曲线拟合 问题 -
肇克谷正: 可用非线性拟合函数lsqcurvefit,简单的程序:function shiyan%主函数 V=%数据V I=%数据I x0=[1 1 1 1];%四个未知数的迭代(猜测)初值,一般随便给 [x,resnorm,residual]=lsqcurvefit(@myfun,x0,V,I)%x即为拟合出的待定常数%resnorm为函数...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网