在Matlab中结合两个关于主键的矩阵

时间:2012-03-28 18:45:24

标签: matlab

我有两个矩阵,第一列是主键,如下所示:

     | 123  3  234 11 |
     | 124  2  634 22 |
A  = | 125  8  731 33 |
     | 126  8  237 44 |
     | 127  6  235 55 |


     | 124  34  23 |
B  = | 125  45  73 |
     | 126  33  37 |
     | 127  44  25 |

我希望新矩阵C

  1. find(A(:,2) > 5)。在这种情况下,满足此条件的指数3,4
  2. 125和126中A中索引3和4的主键值。
  3. 在B中找到值为125和126的行,即2,3。
  4. 创建新矩阵C,用该主键汇总A和B中的值。
  5. Matrix C应该看起来像

    C = | 125  8  731 33 45 73 |
        | 126  8  237 44 35 37 |
    

    我该怎么做?

    谢谢!

2 个答案:

答案 0 :(得分:1)

您使用的关键功能是ISMEMBER。使用两个输出索引:

[idxa, idxb] = ismember(a(:,1), b(:,1));
idxb(idxb==0) = [];

然后你可以结合

c = [a(idxa,:) b(idxb,:)];

我希望您可以添加过滤器并自行选择所需的列。

答案 1 :(得分:0)

统计工具箱包含一个名为JOIN的函数,基本上可以完成你想要的工作。

http://www.mathworks.de/de/help/stats/dataset.join.html

我认为它能满足您的需求。是吗?