登录论坛

查看完整版本 : [MATLAB图像处理] 如何用ezplot3画几个图形


oxcar
2009-04-25, 10:33
clear all
syms x0 x1 x2 x3 x4 y0 y1 y2 y3 y4 z0 z1 z2 z3 z4 t real; %定义符号变量
g1=0.8;w=15;
delta=w/2/g1;
R=0.5;
for n=0:4
An = sqrt(delta*delta+4*(n+1+R*R*(n+2)));
c=[sqrt((0.5*An+delta)/An) sqrt((n+1)/An/(0.5*An+delta)) R*sqrt((n+1)/An/(0.5*An+delta));sqrt((0.5*An-delta)/An) sqrt((n+1)/An/(0.5*An-delta)) R*sqrt((n+1)/An/(0.5*An-delta));0 -R*sqrt(1/(1+R*R)) sqrt(1/(1+R*R))];
E=[n*w+An/2 n*w-An/2 (n-0.5)*w];
ex='exp(-4)'; %考虑到精度把exp(-4)变为符号数
An1 = sqrt(delta*delta+4*(n+R*R*(n+1)));
E1=[n*w+An1/2 n*w-An1/2 (n-0.5)*w];
c1=[sqrt((0.5*An1+delta)/An1) sqrt((n+1)/An1/(0.5*An1+delta)) R*sqrt((n+1)/An1/(0.5*An1+delta));sqrt((0.5*An1-delta)/An1) sqrt((n+1)/An1/(0.5*An1-delta)) R*sqrt((n+1)/An1/(0.5*An1-delta));0 -R*sqrt(1/(1+R*R)) sqrt(1/(1+R*R))];
G=zeros(3 ,3); %定义一个3×3的零矩阵
G=sym(G); %把G变为符号矩阵
U=zeros(1,3); %定义一个1×3的零矩阵
U=sym(U); %把U变为符号矩阵
F=0;
for l=1:3
for j=1:3
Z(j,l)=(exp( 20*i*(t-E(j)+E1(l)))-ex)/( 0.2+ i*(t-E(j)+E1(l)) )/g1;
for k=1:3
G(j,l)=G(j,l)+c(j,2)*c(j,k)*c1(l,k)*sqrt(n+k-1);
end
U(l)=U(l)+Z(j,l)*G(j,l);
end
F=F+conj(U(l))*U(l);
end

if (n==0)
x0=t; y0=n; z0=0.4*g1*F;
end
if (n==1)
x1=t; y1=n; z1=0.4*g1*F;
end
if (n==2)
x2=t; y2=n; z2=0.4*g1*F;
end
if (n==3)
x3=t; y3=n; z3=0.4*g1*F;
end
if (n==4)
x4=t; y4=n; z4=0.4*g1*F;
end

end
hold on; ezplot3(x0,y0,z0,[-10,10]);

grid on;
title('原子发射谱 |2>','FontSize',16);
%legend('delta=0','None',1);
axis([-10 10 0 5 0 15]);
xlabel('X g1=0.8 ');
ylabel('n R=0.5');
zlabel('Emission spectrum');
我想在ezplot3(x0,y0,z0,[-10,10]); 的图形上继续画出ezplot3(x1,y1,z1,[-10,10]);ezplot3(x2,y2,z2,[-10,10]);等的图形,

麒麟子
2009-04-25, 16:18
仅是个人意见,仅供参考
每画完一次图后,用hold on 就行,试试吧

oxcar
2009-04-25, 17:01
我早试过,不行第二个图会覆盖第一个图,我想要在一个图里显示几个图

shirleyflh
2009-04-25, 20:31
我记得用play画图时可以这样
play(x1,y1,x2,y2,....)
你可以试试

Juicy
2009-04-27, 04:44
我早试过,不行第二个图会覆盖第一个图,我想要在一个图里显示几个图

subplot?:p

rain2007123
2010-09-11, 00:55
应该是F的问题。我用ezplot画第三个图的时候就被覆盖了。:mad:

haoxue
2010-09-15, 10:59
使用subplot吧,或者使用figure(1),画一个图,再用figure(2)接着画张图