CODE:
clc
clear
[x1,y1]=meshgrid(-1:1); %构建3*3截面的xy
[x2,y2]=meshgrid(-2:2); %构建5*5截面的xy
[x3,y3]=meshgrid(-3:3); %构建第3个截面的xy,7*7大小。
x11=x3/3; %根据最大的截面来对最小的截面插值(-1:1之间),使得其也为7*7
y11=y3/3;
x22=x3*2/3; %同上,同理在-2:2之间插值7个
y22=y3*2/3;
z1=[0,.5,1;0,.5,1;0,.5,1]; %3个截面的z值
z2=2*ones(5,5);
z3=4*ones(7,7);
z11=griddata(x1,y1,z1,x11,y11); %前2个截面插值完之后的
z值
z22=griddata(x2,y2,z2,x22,y22);
surf(x1,y1,z1) %画出插值前截面
hold on
surf(x2,y2,z2)
hold on
surf(x3,y3,z3)
%通过上面构造,将3*3和5*5的截面插值成了7*7的数组。
for i=1:7
for j=1:7
x(i,j,:)=interp1(1:3,[x11(i,j),x22(i,j),x3(i,j)],1:.5:3); %对每个数组对应位置垂直插值,将3个面插值成5个面。
y(i,j,:)=interp1(1:3,[y11(i,j),y22(i,j),y3(i,j)],1:.5:3);
z(i,j,:)=interp1(1:3,[z11(i,j),z22(i,j),z3(i,j)],1:.5:3);
end
end
figure %插值后画图
for m=1:5
surf(x(:,:,m),y(:,:,m),z(:,:,m))
hold on
end