小编典典

MATLAB:SQL风格的联接操作

sql

我想用Matlab做一个SQL风格的联接。我可以通过创建数据集(统计工具箱),进行联接,转换回并再次删除数据集来做到这一点:

A1 = [10 10 20 20 30 30 50 50]';
B1 = (10:10:70)';
B2 = (1:7)';

dsA = dataset({A1, 'Key'});
dsB = dataset({B1, 'Key'}, {B2, 'Idx'});
dsA = join(dsA, dsB, 'key', 'Key');

结果:

Key    Idx
10     1  
10     1  
20     2  
20     2  
30     3  
30     3  
50     5  
50     5

我的问题:是否有另一种方法, 而不使用数据集,也没有for循环

非常感谢您的帮助!


阅读 161

收藏
2021-04-14

共1个答案

小编典典

对于您的示例,您可以简单地使用ISMEMBER

[~,loc] = ismember(A1,B1);
dsA = [B1(loc) B2(loc)]

结果:

dsA =
    10     1
    10     1
    20     2
    20     2
    30     3
    30     3
    50     5
    50     5

注意:假设中的所有元素都在A1中找到B1。如果不是总是这样,则可以使用ISMEMBER的第一个输出来过滤…中的零值loc

2021-04-14