【问题标题】:How to use find function for different value at each row of a matrix?如何在矩阵的每一行使用查找函数来获取不同的值?
【发布时间】:2013-08-22 06:34:37
【问题描述】:

假设我有一个 3xK 大小的值 need_find = [1 3 4] 和一个矩阵 A。我想在 A 的相应行上找到 need_find 的值。如何在 matlab 中应用矢量化解决方案而不是遍历每一行?

如预期的详细示例;

A = [1 3 4; 1 3 5; 3 4 5];
my_method_do_what_I_want(A,need_find);

方法返回

ans = [1;2;2] 
% so I find the index of each element of need_find at corresponding row at A

长话短说:在第 1 行搜索 1,在第 2 行搜索 3,在第 3 行搜索 4

【问题讨论】:

  • 不清楚,“它在A中的对应行”是什么?请举个例子。还是您的意思是 A 是 K 乘以 3。
  • A 是 3xK 矩阵。 3行K列
  • 你的意思是每行中第一个元素的索引与need_find中的一个元素匹配?
  • @horchler 不完全正确,在第 1 行搜索 1,在第 2 行搜索 3,在第 3 行搜索 4

标签: matlab matrix vectorization


【解决方案1】:

这是一种方法:

A = [1 3 4; 1 3 5; 3 4 5];
need_find = [1 3 4]
[~,idx] = find(bsxfun(@eq,A,need_find(:)))

返回

idx =

     1
     2
     2

如果您在 A 的行中有重复值或根本没有匹配项,则此简单的单行将不起作用,但我只能以您的示例为例...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多