在给定Y值的情况下,使用pchip创建的图形中查找X值。 MATLAB

时间:2013-08-01 10:21:48

标签: matlab graph interpolation

我想使用相应的随机X值生成Y值,这些随机值在Y的范围内,来自我使用{创建的图表{1}}函数,但我希望生成的pchip值保持在特定范围内。

我的代码:

X

输出:

samples=10
r=rand(samples,1)
Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
x=12.5:45:327.5;
angle=pchip(y,x,r);

我希望这些值介于-12.5-360之间,我相信我可以使用这样的东西:

angle = 

1.0e+03 *

   -0.1392
   -3.3718
   -3.4856
   -3.2264
   -0.5284
   -0.8114
   -2.2368
   -0.0804
   -2.9240
   -1.9510

但我不能让它从给定的Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1]; x=12.5:45:327.5; xi=-12.5:360; angle=pchip(y,xi,x); 值生成所需的X值。 我尝试了以下但它不起作用:

Y

我查看过mathworks pchip article和其他数学文章,但它们似乎没有解决我的问题,还看了这篇stackoverflow文章How can I ask matlab to give me the value of y if I input the value of x?,这不是所需的解决方案。

感谢您的时间和帮助。

编辑1 - 更多信息

我认为解决我的问题的方法是,如果我可以获得samples=10 r=rand(samples,1) Y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1]; xi=-12.5:360; x=12.5:45:327.5; angle=pchip(y,xi,x,r); 函数,只需在我的数据之间插入最大值和最小值。正如TryHard所指出的那样,数据可能已被定义在已定义的数据之外,从而导致不稳定。 我知道我可以在一定范围内进行插值,如上所示,但我希望能够在向量pchip中给出X值的情况下生成Y

1 个答案:

答案 0 :(得分:1)

尝试将r的值约束到观察到的y范围:

samples=10;
y=[0.93 0.94 0.95 0.96 0.97 0.98 0.99 1];
x=12.5:45:327.5;

r=rand(samples,1)*(max(y)-min(y)) + min(y);
angle=pchip(y,x,r);