matlab 内插值 外插值,如何在MATLAB中插值求取中间截面(外轮廓线)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值