【问题标题】:Matching 2 matrices of different sizes (matlab)匹配2个不同大小的矩阵(matlab)
【发布时间】:2017-08-14 04:54:24
【问题描述】:

我有 2 个矩阵(D:76572x2 和 E:1850092x7),如果前两列等于较小矩阵 (D) 的任何行,则需要较大矩阵 (E) 中的行值。

例子:

D = [1000 19751231;
     1000 19761231]

E = [1234 19701130 4 5 2 9 3;
     1000 19751231 2 3 2 5 2]

所以在这种情况下,我只需要矩阵 E 中的行:[1000 19751231 2 3 2 5 2]。如何在不使用任何/许多(for-)循环的情况下相对快速地计算大型矩阵?

谢谢

【问题讨论】:

  • 两列长度不同时如何相等?根据您的问题,D 有 76572 行,E 有 1850092。
  • 我更新了问题,它应该是列中的值,而不是整个列。
  • "等于小矩阵中列的值(D)" 你的意思是“等于任何行在小矩阵(D)”吗?
  • 没错。给您带来的不便深表歉意。

标签: matlab performance matrix size match


【解决方案1】:

我们可以在这里使用ismember函数

rows_E = ismember(E(:,1:2),D,'rows');

从你的例子:

>> E(rows_E,:)

产量

ans = 
    1000  19751231  2  3  2  5  2

【讨论】:

  • 有效!多么棒的解决方案!
猜你喜欢
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多