matlab如何用网格截取计算三维图?已经有了一个截断中间段的三维图,想用100*100的网格(按坐标系)将三维图分开,分别计算网格中nan出现的概率(有三维图的矩阵),显示出nan出现概率最小的

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 17:24:37
matlab如何用网格截取计算三维图?已经有了一个截断中间段的三维图,想用100*100的网格(按坐标系)将三维图分开,分别计算网格中nan出现的概率(有三维图的矩阵),显示出nan出现概率最小的
xW]OG+V*:6U>Uc\F~rB &(BRBMB0Їл;آ(6R23{3޹;X+͙ў8ZoNmo~ vჷᾋpo<`V(KNJýy>@cf!9fu&8^ jjy<Q 46lss2z[ ÅݠKPAB49DP0m|HULL|*L඄>2GIY∯. 8$nM,M}z\߂?w͉`c-|aCsNl4ji>~59C3>C!N'ě$ qK)D>Uyڝ~bQn7;LHn~Dadǫ|#yZ.'<+d9 p+cs19ЗCv&u'V\XvW\ϓVQy Ι ҭ<b vRyƼ`C=Sy򘷦f֓]#Y9Fo1vQ:G}<{%Ri\J.V8܎nOʿ^r˴uzK$ERt+GMy2+j+ 1@KƩIn nSϵ-OY>sEn 'te X[;M"YD3 p &2K:]U V :r ,[aIH*r E4Uf\k]Ƕ M#]!2m.Vaz\W4c]jFЙBײl ʖEpDV [b$!ItlTɐ)Q `{1ZoD$3kƘeI]r4C aTƲ+SEm͂O*Hguq4Ҩ%!YlͰ(D U%vt%(|k

matlab如何用网格截取计算三维图?已经有了一个截断中间段的三维图,想用100*100的网格(按坐标系)将三维图分开,分别计算网格中nan出现的概率(有三维图的矩阵),显示出nan出现概率最小的
matlab如何用网格截取计算三维图?
已经有了一个截断中间段的三维图,想用100*100的网格(按坐标系)将三维图分开,分别计算网格中nan出现的概率(有三维图的矩阵),显示出nan出现概率最小的网格.

matlab如何用网格截取计算三维图?已经有了一个截断中间段的三维图,想用100*100的网格(按坐标系)将三维图分开,分别计算网格中nan出现的概率(有三维图的矩阵),显示出nan出现概率最小的
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最少的分块区域');