matlab坐标污染物浓度,如何用MATLAB画粒子空间分布图,并以颜色的深浅表示浓度?...

问题描述:

现有一组室内飞沫污染物的空间分布数据,由于飞沫个数很多,为了更加清晰准确的表示飞沫个数浓度(个/m³)的空间分布,将房间按0.4m×0.4m×0.4m划分成多个小立方体,并将这个小立方体内的飞沫的个数浓度叠加到小立方体的中心点上,以中心点的浓度代表这个小立方体的浓度,并以颜色深浅来表示飞沫个数浓度的大小。

希望得到的飞沫个数浓度分布图如下图一(图中*为病人嘴部的位置,*为嘴部投影到地面的位置,+为陪护和医护嘴部的位置,+为陪护和医护嘴部投影到地面的位置)(该图没有以颜色深浅来表示飞沫个数浓度的大小,我希望能以颜色来表示,这样会更清晰)

现有一个M文件,内容如下:

filename='3-15s-all-DPM.xlsx';

[NUM,TXT,RAW]=xlsread(filename,4);

x=NUM(:,1);

y=NUM(:,2)-3;

z=NUM(:,3);

c=NUM(:,4);

num=size(x,1);%数据个数

l=0.2;%正方体边长

ll=1/l;

x_max=3.5;%长

y_max=3;%高

z_max=8.5;%宽

xi=0:l:x_max;

yi=0:l:y_max;

zi=0:l:z_max;

sizex=size(xi,2);

sizey=size(yi,2);

sizez=size(zi,2);

Csum=zeros(sizex,sizey,sizez);

for i=1:num

x_pos=floor(x(i)/l)+1;

y_pos=floor(y(i)/l)+1;

z_pos=floor(z(i)/l)+1;

Csum(x_pos,y_pos,z_pos)=Csum(x_pos,y_pos,z_pos)+c(i);

end

result_len=sizex*sizey*sizez;

disp(['total:',num2str(result_len)]);

result_x=zeros(result_len,1);

result_y=zeros(result_len,1);

result_z=zeros(result_len,1);

result_c=zeros(result_len,1);

idx=1;

for i=1:sizex

for j=1:sizey

for k=1:sizez

if(Csum(i,j,k)>0)

result_x(idx)=i;

result_y(idx)=j;

result_z(idx)=k;

result_c(idx)=Csum(i,j,k);

idx=idx+1;

end

end

end

end

result_len=idx-1;

plot_c=result_c(1:result_len);

plot_x=result_x(1:result_len)*l-l/2;

plot_y=result_y(1:result_len)*l-l/2;

plot_z=result_z(1:result_len)*l-l/2;

figure,

scatter3(plot_z,plot_x,plot_y,15,plot_c);

xlabel('房间的长');

ylabel('房间的宽');

zlabel('房间的高');

%scatter3(plot_x,plot_y,plot_z,15,plot_c);

%scatter3(plot_x,plot_y,plot_z,plot_c);

% %

% figure,

% i=1;

% plot3(plot_x(i),plot_y(i),plot_z(i),'ko','MarkerSize',result_c_log(i)*4,'MarkerEdgeColor','r');

% hold on;

% for i=2:result_len

%     plot3(plot_x(i),plot_y(i),plot_z(i),'ko','MarkerSize',result_c_log(i)*4,'MarkerEdgeColor','r');

% end

(filename见附件)

根据以上程序得到的图如图二所示:

图二与图一的差别较大,想要得到图一,应该怎么操作?

另外,对比现有的M文件程序,我想要的效果主要有两点不同:

1、由附件filename中可以看出,浓度单位是kg/m³(这个浓度是模拟软件模拟得到的,不需要自己计算),如果想要的是个数浓度(个/m³),应该如何修改程序?(注:附件中,每一行表示一个飞沫污染物,前三列是空间坐标数据X、Y、Z,计算个数浓度可能就要自己编程计算了)

2、该如何用颜色表示个数浓度的大小?

最后,附件中有四张sheet,每一张代表飞沫污染物的一种粒径,结果要求的是,每一张sheet(即每一种粒径)对应一张个数浓度空间分布图,并以颜色表示浓度大小

由于之前没有接触过MATLAB,导师突然给这个任务,我也摸不着头脑,希望能得到帮助,谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值