求助:如何用vtk显示三维网格体
1个回答
2016-12-04
展开全部
clear all
[X,Y] = meshgrid(linspace(-3,3));
Z = peaks(X,Y);%生成数据z
zR=[1,6];%设置z范围,你自己可以改
z1=Z.*(Z>=zR(1)&Z<=zR(2));%为取出设定范围数据而得到逻辑数组
z2=Z;%为不覆盖原始Z,新建变量
z2(z1(:)==0)=NaN;%设定范围外的值改为NAN,得到初始数据
s=size(z2);
s1=[5,10];%设置分块大小(按数据点),你自己可以改,但必须根据原始数据大小能够整除,如不能整除可以剪裁或添加数据
%如果是按坐标系,你需要计算100×100的坐标中有多少个数据点,再来更改上面的设置
s2=[s(1)/s1(1),s(2)/s1(2)];%计算分多少块
for i=1:s2(1);
for j=1:s2(2);
b=z2((i-1)*s1(1)+1:i*s1(1),(j-1)*s1(2)+1:j*s1(2));%分块数据
a(i,j)=length(find(isnan(b)));%计算每个分块中NaN的个数
end
end
for i=1:s2(1);
for j=1:s2(2);
c((i-1)*s1(1)+1:i*s1(1),(j-1)*s1(2)+1:j*s1(2))=a(i,j);%让每一分块赋值为该块的个数
end
end
z3=(c<=min(c(:)));%为取出概率最小的数据重新赋颜色而得到逻辑数组
z4=Z;%为不覆盖原始Z,新建变量
z4(z3(:)==1)=max(Z(:));%设定概率最小的数据颜色暗红色
figure(2)
mesh(X,Y,z2,Z);
% surf(X,Y,z2,a2);
axis([-3 3 -3 3 -10 10])
% shading interp
title('裁剪的原始数据');
figure(3)
mesh(X,Y,z2,c);
% surf(X,Y,z2,a2);
axis([-3 3 -3 3 -10 10])
% shading interp
title('裁剪的原始数据分块NaN个数的分布');
figure(4)
mesh(X,Y,z2,z4);
% surf(X,Y,z2,a2);
axis([-3 3 -3 3 -10 10])
% shading interp
title('裁剪的原始数据NaN最少的分块区域');
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询