2014-12-05 47 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