【问题标题】:How do I interpolate between points without going beyond them?如何在点之间进行插值而不超出它们?
【发布时间】:2012-10-15 22:14:08
【问题描述】:

我有可变长度的数据(以 2D 记录的到达运动)并希望创建一个函数,将这些数据重新采样为统一长度(500 个样本)。

但是,我希望 matlab 仅在给定的最大值和最小值之间重新采样,而不增加任何额外的距离。例如,如果我对矩阵 [1:1:10] 重新采样,则重新采样的矩阵应该具有最小值 1 和最大值 10。

到目前为止,我已经尝试了以下方法:

x = [1:1:10];
interp(x, 500 / length(x));

然而,这给出的值高于我的最大指定值 10。

有什么方法可以让 matlab 仅在两点之间重新采样/插值,而不超出它们?

【问题讨论】:

  • 不确定我是否理解你的问题,但你的例子可以用x=(1:1:10)';n=500;xi=interp1((1:numel(x))',x,linspace(1,numel(x),n)');解决

标签: matlab interpolation


【解决方案1】:

如果我理解正确,您需要:

x=(1:1:10);
n=500;
xi=interp1(1:length(x),x,linspace(min(x),max(x),n));

【讨论】:

  • 我认为你的回答有误,我会写[...],linspace(1,length(x),n));
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2016-10-24
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2022-12-10
  • 1970-01-01
相关资源
最近更新 更多