【问题标题】:Find the X value from a graph, created using pchip, given the Y value. MATLAB给定 Y 值,从使用 pchip 创建的图形中找到 X 值。 MATLAB
【发布时间】: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,如我的第一个代码部分所示。我也有 XY 按我需要的顺序,以获得正确的结果。
  • 更正:大多数样本 r

标签: matlab graph interpolation


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 2021-06-10
    相关资源
    最近更新 更多