气体高斯扩散模型 怎么调出图来啊
气体高斯扩散模型 怎么调出图来啊 等浓度曲线图 等浓度区域图调的时候我就是自己试一些数据但是得不到较好的图 请高人高人指教
function gauss()
global Q H u;
Q=2.5;
H=20;
u=2.5;
%Q=str2double(get(handles.input_Q,'String'));%获得计算的毒气量值
%u=str2double(get(handles.input_u,'String'));%获得用户输入的风速值
%H=str2double(get(handles.input_H,'String'));%获得用户输入的毒源有效高度值
%xmin=str2double(get(handles.input_xmin,'String'));%设置要显示的x轴的范围
%xmax=str2double(get(handles.input_xmax,'String'));
%ymin=str2double(get(handles.input_ymin,'String'));%设置要显示的y轴的范围
%ymax=str2double(get(handles.input_ymax,'String'));
%z=str2double(get(handles.input_z,'String'));%获得要显示浓度分布距地面的垂直高度值
%n=str2double(get(handles.input_n,'String')); %获得用户确定显示的坐标轴精度值
xmin=100;xmax=500;ymin=-250;ymax=250;z=183;n=100;
=meshgrid(xmin:((xmax-xmin)/(n-1)):xmax,ymin:((ymax-ymin)/(n-1)):ymax);%网格划分
%创建扩散参数系数矩阵
C=[0.924279 0.177154 0.917595 0.106803;...
0.885157 0.232123 0 0 ];
C1=[0.926849 0.143940 0.838628 0.126152;...
0.886490 0.189396 0.756410 0.235667;...
0 0 0.815575 0.136659];
%s=get(handles.select,'Value');%选择大气稳定度等级
s=4;
switch (s)
case 4 %如果选择大气稳定度为B1级
if x<=500
a1=B1(1,1);b1=B1(1,2);a2=B1(1,3);b2=B1(1,4);
elseif x>500&&x<=1000
a1=B1(1,1);b1=B1(1,2);a2=B1(2,3);b2=B1(2,4);
elseif x>1000
a1=B1(2,1);b1=B1(2,2);a2=B1(2,3);b2=B1(2,4);
end
case 5 %如果选择大气稳定度为C级
if x>=1&&x<=1000
a1=C(1,1);b1=C(1,2);a2=C(1,3);b2=C(1,4);
elseif x>1000
a1=C(2,1);b1=C(2,2);a2=C(1,3);b2=C(1,4);
end
end
y1=b1*x.^a1; %根据上述选取的扩散参数系数计算y、z轴上的扩散参数
z1=b2*x.^a2;
c=Q./(2*pi*u*y1.*z1).*exp(-y.^2./(2*y1.^2)).*(exp(-(z-H)^2./(2*z1.^2))+...
exp(-(z+H)^2./(2*z1.^2))); %高斯方程计算扩散浓度
%绘制某浓度的危险区域图程序
% c0=str2double(get(handles.input_c0,'String'));
c0=0.5;
=find(abs(c-c0)<0.01); %限定误差范围误差
for ii=1:length(I)
c(I(ii),J(ii))=NaN;
end
surf(x,y,c);
colorbar;
shading interp
xlabel('x'),ylabel('y'),zlabel('c');title('特定浓度值的范围及浓度分布');
view(0,90);%查看俯视图
%
% %绘制多条等值浓度曲线程序
% cm=str2double(get(handles.cmatrix,'String')); %获得用户输入的浓度值
% a=contour(x,y,c,,'r'); %绘制等浓度曲线
% clabel(a)
% xlabel('x'),ylabel('y'),title('特定浓度的等值线');
% grid on
% hold on
%
% c=str2double(get(handles.input_c1,'String')); %获得用户输入的浓度值
% gx=str2double(get(handles.input_guess,'String')); %通过查看等浓度曲线获得地面轴线下风向距离的近似值
% ……%用 gx代替以上扩散参数系数选择代码中的 x,确定系数 a1,b1,a2,b2的值
% p=sym('Q/(2*pi*u*(b1*x^a1)*(b2*x^a2))*(exp(-(-H)^2/(2*(b2*x^a2)^2))+exp(-H^2/(2*(b2*x^a2)^2)))-c=0'); %方程字符化
% p=simple(p); %化简方程
% x=solve(p); %求解字符方程
% x=subs(x);%求得某浓度下风向地面轴线距离 x的精确值
% x=num2str(x);
% set(handles.show_x1,'String',x);
%
% x0=str2num(get(handles.input_x0,'String')); %获得用户输入的下风向距离值
% x=x0;
% ……% 省略部分参照前面程序
% c=num2str(c); % 将计算出的浓度值转化为字符型
% set(handles.show_cx,'String',c); %输出该处浓度值
[ 本帖最后由 ameng2009 于 2009-3-22 14:42 编辑 ] 水平有限, 建议楼主加强发问题方式!
这是气体高斯扩散的模型描述
这是气体高斯扩散的模型描述,前面一部分注释可以直接赋值计算,后面注释主要能调通“等浓度曲线”的部分就好了,非注释部分已调通,并出图,只是离理论形状差的有点远,问题可能出在坐标轴上。[ 本帖最后由 ameng2009 于 2009-3-24 14:07 编辑 ] 你到底要解决几个问题?调通“等浓度曲线”的部分?离理论形状差的有点远?
“等浓度曲线”的部分你自己可以先调试下啊,看问题出在哪里。另外,后面的参数一个都没给,要别人怎么调?
就是要个等浓度曲线
在下实在菜鸟,用Matlab不过三天,,参数用上面的,可以赋值,我就是用这种傻办法干活的,惭愧:@L 那你自己先调试撒,碰到问题再来问。从你给的代码看不出什么问题来,也不知道你为什么调不出 请问这个公式在Visual Studio 2005当中用C#怎么实现啊? 感谢一下!! 为什么我用你的代码就画不出图啊?求解!!! 非常感谢这些代码 回复 10 # nilson 的帖子代码并没齐全且报错, 真好奇感谢什麼!? 楼上的朋友,你能把你这个程序发给我吗???!!我现在做毕设急需啊
页:
[1]