【问题标题】:Find multiple sub-matrices in a matrix [duplicate]在矩阵中查找多个子矩阵[重复]
【发布时间】:2014-01-22 13:58:21
【问题描述】:

我想找到它们的值驻留在矩阵中的所有 [d1 by d2] 子矩阵,例如,假设我有以下内容:

pvec = [ 1   1
         2   2 
         3   4
         4   7]

m = [ 1 4 1 1;
      2 2 1 1;
      2 2 2 1;
      3 4 2 1;
      1 1 3 3;
      2 2 5 6 ]

[1 1] 的索引点:(1,3)、(1,4)、(2, 3)、(2, 4)、(5,1) 和 (5,2)。对于所有出现的行,这些点应该一起返回,例如 [1 1] 案例(我不在乎它们是实际的 (i,j) 点还是线性索引)。

正如我所说,我知道如何为这样的固定 pvec 执行此操作:

m(find(ismember(m, pvec(1, :)) & ismember(m, pvec(2, :)) & ismember(m, pvec(3, :))))

我想你明白了,但问题是 pvec 可能会在脚本的每次迭代中改变大小,我不知道如何一次得到它们。有人知道怎么做吗?

我自己找到了答案;虽然不是很优雅。

idc = [];
Ig = imread(someimg);
padvec = [ ... ] % some pad vec
for i = 1:size(padvec,1)
    idc = [idc, find(ismember(Ig, padvec(i, :)))'];
end

【问题讨论】:

  • 请同时提供m 的示例,并显示该pvec 示例的输出应该是什么
  • @Dan 你去了,希望我能澄清一下我想要的东西。谢谢!
  • 我尝试了作为解决方案提出的那个函数,在我的例子中它返回一个零矩阵。不是我想要的。
  • @jtimz 请显示该尝试的代码?
  • 我找到了@Dan,感谢您的意见。

标签: matlab matrix


【解决方案1】:

这是你想要的吗?

pvec = [ 2   2 
         3   4
         4   7]

m = [1, 4
     2, 2
     2, 2
     3, 4
     1, 1
     2, 2]

m(ismember(m,pvec, 'rows'), :)

ans =

   2   2
   2   2
   3   4
   2   2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2016-05-02
    • 2019-07-17
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多