2014-12-05 71 views
0

我有矩阵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]MATLAB:扫描矩阵和使用值的行,以搜寻另一矩阵

我想: 1.扫描X中每一行的最后两列(FYI,这两个数字组合是唯一的) 2.在A的前两列中查找这些值 3.获得该行最后一列的值。

例如,对于X的第一行,我得到1和1,所以我找到1和1的前两列在A这似乎是第一行),所以我希望得到数为0

我想我可以使用一个循环和“查找”功能,做到这一点,如果它是一个号码我的工作,但我是matlab新手,并且遇到麻烦两个数字的组合。我会感谢您的帮助!

回答

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每行表示是否将其在发现和loc,其持有相应的索引到一个对匹配的那些行。然后,您使用这些索引来索引到A以提取“值”或因变量列。这些矢量化操作,所以它会比用循环和find()做更快。

通读了ismemberuniqueparen的文件,他们引用的功能,以获得更多的背景上Matlab的功能做recordwise搜索这样的。

+0

它的工作原理出很好,谢谢! – aggie07 2014-12-05 11:30:02