我想使用相应的随机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} p>
答案 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);