Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 当输入超出范围时,如何处理插值?_Matlab - Fatal编程技术网

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);
用于其他方向的外推情况