1

我想X使用相应的随机值生成Y值,这些随机值在Y我使用该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);

输出:

angle = 

1.0e+03 *

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

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

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值。我尝试了以下方法,但它不起作用:

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);

我查看了mathworks pchip 文章和其他 mathworks 文章,但它们似乎没有解决我的问题,还查看了这篇 stackoverflow 文章如果我输入 x 的值,如何让 matlab 给我 y 的值?,这不是所需的解决方案。

感谢您的宝贵时间和您可以提供的帮助。

编辑 1 - 更多信息

我认为解决我的问题的方法是,如果我能够获得pchip仅在设置点最大值和最小值之间插入数据的函数。正如 TryHard 指出的那样,数据可能被插值在已定义的数据之外,从而导致不稳定。我知道我可以在上面演示的某个范围内进行插值,但我希望能够做到这一点并生成给定向量中的X值的Yr

4

1 回答 1

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);
于 2013-08-01T11:32:35.163 回答