发布网友
共2个回答
热心网友
大致弄了一个:
基本符合要求
xyz=load('data.txt');
x=xyz(:,1);
y=xyz(:,2);
z=xyz(:,3);
minx=min(x);
maxx=max(x);
miny=min(y);
maxy=max(y);
%以下将最大最小值向0.5看齐
minx=floor(minx/0.5)*0.5;
maxx=ceil(maxx/0.5)*0.5;
miny=floor(miny/0.5)*0.5;
maxy=ceil(maxy/0.5)*0.5;
xx=minx:0.5:maxx;
yy=miny:0.5:maxy;
plot(x,y,'.')
set(gca,'xtick',xx,'ytick',yy)
grid on
[gx,gy]=meshgrid(xx,yy);
averz=zeros(size(gx)-1);
nz=zeros(size(gx)-1);
for iz=1:length(z)
flag=0;
for ix=1:length(xx)-1
if x(iz)>=xx(ix)&& x(iz)<xx(ix+1)
for iy=1:length(yy)-1
if y(iz)>=yy(iy) && y(iz)<yy(iy+1)
averz(iy,ix)=averz(iy,ix)+z(iz);
nz(iy,ix)=nz(iy,ix)+1;
flag=1;
break;
end
end
end
if flag==1
break;
end
end
end
for ix=1:length(xx)-1
for iy=1:length(yy)-1
if (nz(iy,ix)~=0)
averz(iy,ix)=averz(iy,ix)/nz(iy,ix);
end
end
end
figure
bar3(nz)
set(gca,'xticklabel',xx,'yticklabel',yy)
title('个数')
figure
bar3(averz)
set(gca,'xticklabel',xx,'yticklabel',yy)
title('平均值')
热心网友
grid on;