latibos 发表于 2007-1-12 16:30

[求助]如何将contour命令绘制的等高线图变成动画显示?

已经用contour命令画出了高斯模型气体扩散的等高线图,但是希望能做成随时间不断变化的动画形式的,不知怎么做。

xjzuo 发表于 2007-1-12 19:35

回复

建议把你的代码贴一下.
另:应该可以通过作一个循环, 用drawnow, pause实现.
 也可以试试getframe, movie.

[ 本帖最后由 xjzuo 于 2007-1-12 20:08 编辑 ]

latibos 发表于 2007-1-13 09:26

回复 #2 xjzuo 的帖子

Q=input('请输入泄漏源强(mg/s):Q=');
u=input('请输入计算风速(m/s):u=');
d=input('请输入计算精度(m):d=');
Z0=input('请输入地面粗糙长度(m):Z0=');
Cs=input('请输入所有求解浓度(mg/m3):');
=meshgrid(1:d:50,-10:d:10); %定义解析空间和计算精度
by1=0.08*x1.*(1+0.0001*x1).^(-1/2);%计算y轴向的基本扩散参数
bz1=0.06*x1.*(1+0.0015*x1).^(-1/2);%计z轴向的扩散参数
by11=by1.*(1+0.38*Z0);%对y轴向的扩散参数按地面粗糙长度进行修正。
fz1=(2.53-0.13*log(x1)).*(0.55+0.042*log(x1)).^(-1).*Z0.^(0.35-0.03*log(x1));%按地面粗长度计算轴向的扩散参数修正系数
bz11=bz1.*fz1;%对z轴向的扩散参数按地面粗糙长度进行修正。
%高斯扩散浓度模拟计算%
tempy1=-y1.*y1./by1./by1/2;
tempy2=2.718282.^(tempy1);
c1=Q/pi/u*((by1.*bz1).^(-1)).*tempy2;
contour(x1,y1,c1,Cs);%绘制浓度扩散分布图
shading interp;
colorbar;
grid;

latibos 发表于 2007-1-13 09:28

回复 #2 xjzuo 的帖子

谢谢先,我去试一试:@)

xjzuo 发表于 2007-1-13 11:33

修改了一下你程序中的小错误, 然后任意取了几个参数,
写了下面的代码,看看是否是你想要的效果:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Q=0.1;
d=1e-1;
Z0=1;
for u=1:10
=meshgrid(1:d:50,-10:d:10); %定义解析空间和计算精度
by1=0.08*x1.*(1+0.0001*x1).^(-1/2);%计算y轴向的基本扩散参数
bz1=0.06*x1.*(1+0.0015*x1).^(-1/2);%计z轴向的扩散参数
by11=by1.*(1+0.38*Z0);%对y轴向的扩散参数按地面粗糙长度进行修正。
fz1=(2.53-0.13*log(x1)).*(0.55+0.042*log(x1)).^(-1).*Z0.^(0.35-0.03*log(x1));%按地面粗长度计算轴向的扩散参数修正系数
bz11=bz1.*fz1;%对z轴向的扩散参数按地面粗糙长度进行修正。
%高斯扩散浓度模拟计算%
tempy1=-y1.*y1./by1./by1/2;
tempy2=2.718282.^(tempy1);
c1=Q/pi/u*((by1.*bz1).^(-1)).*tempy2;
contour(x1,y1,c1) %绘制浓度扩散分布图
xlim();
ylim([-0.3 0.3])
shading interp
colorbar
grid
drawnow
pause(0.2)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[ 本帖最后由 xjzuo 于 2007-1-13 11:48 编辑 ]

latibos 发表于 2007-1-13 21:09

谢谢!:@)
就是这样的动画效果,可是等高线的数量太少了。

xjzuo 发表于 2007-1-13 22:41

回复

由于你的参数没有给出,所以只能大概画一下效果图.
接下来你应该可以按此思路写自己的代码了.
页: [1]
查看完整版本: [求助]如何将contour命令绘制的等高线图变成动画显示?