【问题标题】:Find closest value between time vectors of different lengths in MATLAB在MATLAB中找到不同长度的时间向量之间的最接近值
【发布时间】:2015-05-12 22:58:35
【问题描述】:

我有 2 个向量,v1v2,包含日期和时间数据。向量有不同的长度,length(v1)=15length(v2)=6。我想获得一个新向量v3,其中包含v1v2 之间最接近的值,这样我就可以准确匹配v1v2 中的日期和时间。有谁知道如何实现这一目标?谢谢你。

【问题讨论】:

  • 这种情况下新向量的长度是多少?
  • 您必须指定“之间最接近的值”的含义。一个真实数据的例子会有所帮助。
  • 这只是对你previous question的概括吗?
  • 新向量的长度应该和length(v1)相等(忘了说了)。是的,这是对我之前的问题的概括,因为我意识到我的 2 个数据集的长度不相等。
  • 感觉就像我花时间回答你之前的问题一样。下次请更具体/准确...顺便说一句,您可以使用统计工具箱中的pdist2 函数来操作不同类型的距离。

标签: arrays matlab


【解决方案1】:

要在v1 中找到与v2 的每个元素最接近的值:

v1 = [1 3 5 3 4];
v2 = [4 5 6];                                               % // example data
[~, ind] = min(abs(bsxfun(@minus, v1(:), v2(:).')), [], 1); %'// compute all differences
                                                            % // and find index of minimizer
result = v1(ind);                                           % // build result

在这个例子中,

result =
     4     5     5

【讨论】:

  • 谢谢。有用。如果我想要length(result)=length(v1),我应该怎么做?
  • 在这种情况下,您希望v1 的每个元素与v2 最接近。所以只需在我的代码中交换 v1v2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2016-12-02
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多