【发布时间】:2013-08-01 10:21:47
【问题描述】:
我想使用相应的随机Y 值生成X 值,这些随机值在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);
但是我不能让它从给定的Y 值生成所需的X 值。
我尝试了以下方法,但它不起作用:
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 article 和其他 mathworks 文章,但它们似乎没有解决我的问题,还查看了这篇 stackoverflow 文章 How can I ask matlab to give me the value of y if I input the value of x?,这不是所需的解决方案。
感谢您抽出宝贵时间并提供帮助。
编辑 1 - 更多信息
我认为解决我的问题的方法是,如果我能获得 pchip 函数,只是将我的数据插入到设置点的最大值和最小值之间。正如 TryHard 指出的那样,数据可能被插值在已定义的数据之外,从而导致不稳定。
我知道我可以在上面演示的某个范围内进行插值,但我希望能够做到这一点,并在给定向量 Y 向量 r 中的 Y 值的情况下生成 X 值
【问题讨论】:
-
在你上一个代码 sn-p 中,使用
angle=pchip(x,Y,xi);对我有用......结果到底有什么问题?您确实意识到x必须在参数中的y之前,对吧? -
我最好的猜测是您正在对 extrapolate 应用一个插值函数:注意值 r>Y。这可能导致不稳定。你想从你的 (x,y) 数据中推断出来吗?或许您能更清楚地解释您的总体目标?
-
@Dan 是的,使用
angle=pchip(x,Y,xi);工作正常,但没有给我需要的输出,因为我希望它提供结果大小的样本r,如我的第一个代码部分所示。我也有X和Y按我需要的顺序,以获得正确的结果。 -
更正:大多数样本 r
标签: matlab graph interpolation