【问题标题】:Interpolating coordinates for a specific time为特定时间插值坐标
【发布时间】:2018-07-13 11:14:18
【问题描述】:

我正在尝试跨时间插入 X 和 Y 坐标的值。当我尝试对特定坐标(X,Y 值)进行插值时,我得到了 NaN。

data_to_be_interpolated = final_plot_matrix(:,[1 24:25]);
data_to_be_interpolated(isnan(data_to_be_interpolated)) = 0;
X_coordinate = data_to_be_interpolated(2:end,2);
Y_coordinate = data_to_be_interpolated(2:end,3);
time         = data_to_be_interpolated(2:end,1);
coordinates_together = [X_coordinate Y_coordinate];
missing_part = fillmissing(data_to_be_interpolated(2:end,2:3),'linear','SamplePoints',data_to_be_interpolated(2:end,1))

需要插值的matix数据图片如下

当我给出值 5.6366e+04(时间值)来获得 X 和 Y 坐标的插值时,现在得到的是 [0, 0],而不是 X 和 Y 值。任何帮助将不胜感激。

【问题讨论】:

  • 您需要先从数据中删除 nans
  • NaNs 之间插值将始终导致NaN 输出。您必须从输入 XY 中排除 NaN。还要确保你想要插值的值x_new包含在你原来的X域中,否则你必须使用interp1函数的extrapolation开关。
  • @AnderBiguri,我删除了 nans 并执行了操作,现在它显示 [0, 0] 而不是 nans
  • @Hoki,你能给我更清晰的图片吗?很抱歉,我无法理解您所说的外推开关是什么意思。

标签: matlab interpolation


【解决方案1】:

试试这个,

Z = fillmissing(X_coordinate,'linear','SamplePoints',time);

这将插入缺失值。

记得将全零转换为NaN

zt = 1:1:5;
za = [100 50 0 0 20];
za(za == 0) = NaN;

zb = fillmissing(za,'linear','SamplePoints',zt);

zb =

100 50 40 30 20

【讨论】:

  • 这给了我一个空向量。它没有插入缺失值
  • 您需要将零转换为 NaN。
  • 非常感谢。这就是 in 一直在寻找的东西。我在上面的代码中进行了编辑。
  • 我还想问一件事。我想将第 2 列中所有列的插值放在末尾。我写了一个循环来执行这个动作,它似乎不起作用。您能否对此提供一些见解。上面添加了修改后的代码。
  • 我没有正确理解您的问题。当您使用 'fillmissing' 时,缺失值将自动替换为插值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-19
  • 2012-05-04
  • 1970-01-01
  • 2015-06-26
  • 2011-11-01
  • 2019-01-19
相关资源
最近更新 更多