Matlab 当输入超出范围时,如何处理插值?
比方说,我需要做这个插值Matlab 当输入超出范围时,如何处理插值?,matlab,Matlab,比方说,我需要做这个插值 z = 1:1:240; x = 0.1:0.1:1; phi_1 = [0.02, 0.08, 0.17, 0.27, 0.38, 0.45, 0.67, 0.74, 0.86, 1.0]; zz= z/240; phi_z = interp1(x, phi_1, zz); 问题是,当zz这是应该如何做的,但是它对我来说似乎并不太强。考虑这个情况,你想要 ZZ= 0:0.01:1.1 ,所以你在两个方向外推。有一个单< /强>外推值对我来说没有太
z = 1:1:240;
x = 0.1:0.1:1;
phi_1 = [0.02, 0.08, 0.17, 0.27, 0.38, 0.45, 0.67, 0.74, 0.86, 1.0];
zz= z/240;
phi_z = interp1(x, phi_1, zz);
问题是,当zz<0.1
时,它没有数据。
在这种情况下,我希望它保持在x=0.1,phi_1=0.02
再添加一行
phi_z(zz<min(x))=phi_1(1);
phi_z(zz再添加一行
phi_z(zz<min(x))=phi_1(1);
phi_z(zz函数interp1
为插值(和外推)提供第四个输入参数方法,默认值为'linear'
,也是外推情况下的第5个输入参数。此参数可以是字符串:'extrap'
,然后matlab也将对外推情况应用指定的方法。输入值也可以是常量extrapval
,对于超出范围的任何输入都将返回该值。
因此,在本例中,您只需将外推值extrapval
设置为phi_1(1)
然后,图形表示如下所示:
plot(x, phi_1, 'ko')
hold on
plot(zz, phi_z, 'r-')
legend('data', 'interpolation and constant extrapolation')
请注意,对于小于0.1的值(在左侧)的常数外推
<> P>这是<强>应该如何做的,但是它对我来说似乎并不太强。考虑这个情况,你想要<代码> ZZ= 0:0.01:1.1 ,所以你在两个方向外推。有一个<强>单< /强>外推值对我来说没有太多意义。GUDDUS解决方案似乎更健壮,特别是如果你。为另一个方向的外推情况添加类似:phi_z(zz>max(x))=phi_1(end);
。interp1
函数为插值(和外推)提供第四个输入参数方法,默认值为'linear'
,也是外推情况下的第5个输入参数。此参数可以是字符串:'extrap'
,然后matlab也将对外推情况应用指定的方法。输入值也可以是常量extrapval
,对于超出范围的任何输入都将返回该值。
因此,在本例中,您只需将外推值extrapval
设置为phi_1(1)
然后,图形表示如下所示:
plot(x, phi_1, 'ko')
hold on
plot(zz, phi_z, 'r-')
legend('data', 'interpolation and constant extrapolation')
请注意,对于小于0.1的值(在左侧)的常数外推
<> P>这是<强>应该如何做的,但是它对我来说似乎并不太强。考虑这个情况,你想要<代码> ZZ= 0:0.01:1.1 ,所以你在两个方向外推。有一个<强>单< /强>外推值对我来说没有太多意义。GUDDUS解决方案似乎更健壮,特别是如果你。添加类似于:phi_z(zz>max(x))=phi_1(end);
用于其他方向的外推情况