【问题标题】:Find index of a pair of value in array with matlab用matlab在数组中查找一对值的索引
【发布时间】:2013-08-28 07:41:52
【问题描述】:

我有 2 个值,我想在数组中找到它们。 此值具有相同的索引

例子:

0 0
1 2
2 3
4 5

我正在寻找 (1,2) 所以索引是 2

【问题讨论】:

  • 请解释您如何从示例数据中获得2。不清楚。
  • 这里是原始数组 link 我要查找的对在第 2 列和第 3 列中
  • 请编辑您的问题以澄清您正在寻找一系列值的起始索引。另外,修改您的示例以与问题一致。在您的情况下,索引将为 3(或改写问题)。

标签: arrays matlab indexing


【解决方案1】:
M = [[0 0]; [1 2]; [2 3]; 4 5]

ex = [1, 2]

[~ r] = ismember(ex,M, 'rows')

我想这就是你所追求的。

如果您不想匹配整行,而只是匹配第 2 列和第 3 列,那么:

[~, r] = ismember(ex, M(:,2:3), 'rows')

【讨论】:

  • M 不是我的数组,请参阅链接link 我正在查看第 2 列和第 3 列
  • ex(1) 在第 3 列,ex(2) 在第 2 列。如果我尝试您的代码: [~ r] = ismember(pos, s(:,3:2), ' rows') 我有这个错误:“一个用于多个 LHS 分配的数组不能包含表达式”
  • @user2724407 试试s(:,[3,2]),你不能只在 Matlab 中使用3:2。不过你可以去3:-1:2
  • 我有同样的错误 [~ r] = ismember(pos, s(:,[3,2]), 'rows')
  • @user2724407 好的,也许是因为我在 LHS 上省略了逗号。试试[~, r] = ...
【解决方案2】:

查找(示例(1:end-1)==val(1) & 示例(2:end) ==val(2))

或者,如果您有合适的工具箱(经济?),请使用 lagmatrix 和 bsxfun 来比较整行。

【讨论】:

  • 2 是我正在寻找的配对的索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
相关资源
最近更新 更多