gpt4 book ai didi

matlab - 为什么 feval 会在 MATLAB 中返回 NaN

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:22 25 4
gpt4 key购买 nike

我有一堆二维点,我知道它们的值,我想通过它们拟合三次样条,以使用 MATLAB 插入一些其他数据。

我的代码如下:

fitobject = fit(x,y,'cubicinterp');
yy=feval(fitobject,xx)

具有以下输入:

坐标

x = [...
313 3;
313 5;
313 7;
315 3;
315 5;
317 3;
319 5];

值(value)观

y = [...
28.0779;
28.0186;
11.6220;
16.7640;
23.7139;
-14.7882;
-20.4626];

插值点

xx = [...
313 3;
313 4;
313 5;
313 6;
313 7;
313 8;
313 9;
314 3;
314 5;
314 7;
315 3;
315 4;
315 5;
315 6;
315 7;
316 3;
316 5;
317 3;
317 4;
317 5;
318 3;
319 5;
319 6;
319 7;
320 5];

在我的输出向量 yy 中,我得到了几个 NaN 值。对我来说,输入数据看起来很干净(它们都是有限值,没有 NaN)。我不明白什么会导致 feval 在拟合数据时返回 NaN。为什么它不能提供最好的贴合度,即使它很糟糕?我的方法有错误吗?

我浏览了一下,好像同一个问题在mathworks论坛上问了很多次,但没有人给出明确的答案。

预先感谢您的帮助。

最佳答案

这是因为插值不能用作外推:

  %xx(:,1)    xx(:,2)  yy

313.0000 3.0000 28.0779
313.0000 4.0000 29.5074
313.0000 5.0000 28.0186
313.0000 6.0000 22.3233
313.0000 7.0000 11.6220
313.0000 8.0000 NaN % xx exceeds bounds of original x interval
313.0000 9.0000 NaN % xx exceeds bounds of original x interval
314.0000 3.0000 24.1239
314.0000 5.0000 27.5130
314.0000 7.0000 NaN % xx exceeds bounds of original x interval
315.0000 3.0000 16.7640
315.0000 4.0000 21.7028
315.0000 5.0000 23.7139
315.0000 6.0000 11.2710
315.0000 7.0000 NaN % xx exceeds bounds of original x interval
316.0000 3.0000 1.4641
316.0000 5.0000 13.9662
317.0000 3.0000 -14.7882
317.0000 4.0000 -5.4876
317.0000 5.0000 2.7781
318.0000 3.0000 NaN % xx exceeds bounds of original x interval
319.0000 5.0000 -20.4626
319.0000 6.0000 NaN % xx exceeds bounds of original x interval
319.0000 7.0000 NaN % xx exceeds bounds of original x interval
320.0000 5.0000 NaN % xx exceeds bounds of original x interval

换句话说,您试图获取超出原始表面数据边界的数据(外推),这通常已经相当危险,而且 fit 甚至不允许您这样做.

关于matlab - 为什么 feval 会在 MATLAB 中返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16816642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com