MATLAB:扫描矩阵的行并使用值来搜索另一个矩阵

时间:2014-12-05 01:18:12

标签: matlab

我有矩阵X和A在哪里 X = [x1,y1,1,1; x2,y2,1,3; x3,y,2,4] A = [1,1,0; 1,3,1; 1,4,2]

我想: 1.扫描X中每一行的最后两列(仅供参考,这两个数字组合是唯一的) 2.在A的前两列中找到这些值 3.获取A行中最后一列的值。

例如,对于X的第一行,我得到1和1,所以我找到A中的前两列的1和1(看起来是第一行),所以我想得到的数字是0

我认为我可以使用循环和“查找”功能来实现它,如果它只是我正在使用的一个数字,但我是matlab的新手并且在两个数字的组合上遇到了麻烦。我很感激你的帮助!

1 个答案:

答案 0 :(得分:1)

ismember函数可能是您正在寻找的函数,以及():运算符,用于从数组中提取列。

% Map rows in X to rows in A
[tf,loc] = ismember(X(:,[3 4]), A(:,[1 2]), 'rows');
% Grab the corresponding value from A
rslt = A(loc, 3);

现在你有一个逻辑向量tf,它指示X中的每一行是否在A中找到,loc,它将相应的索引保存到A的行中。匹配。然后使用这些索引索引到A以拉出"值"或因变量列。这些是矢量化操作,因此它比使用循环和find()更快。

仔细阅读ismemberuniqueparen的文档及其引用的功能,以获取更多有关Matlab功能的背景信息,以便进行此类记录搜索。< / p>