MATLAB Answers

Logical vector based on matrix rows

2 views (last 30 days)
ARS
ARS on 22 Feb 2013
Let's say I have the matrix
A =
-2 1 2
1 2 3
3 1 2
4 3 4
1 1 2
and I want a logical vector in which the nth element is 1 if A(n,2:end) == [1 2] (for instance) and 0 otherwise. So in this case the result would be [1 0 1 0 1]. Of course this is just a random example, but what would be an easy, general solution to achieve this, for arbitrary matrix A (in this case as above) and row vector v (in this case [1 2])?

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 22 Feb 2013
Edited: Azzi Abdelmalek on 22 Feb 2013
out=ismember(A(:,2:end),[1 2],'rows')'

More Answers (1)

Mark Whirdy
Mark Whirdy on 22 Feb 2013
Edited: Mark Whirdy on 22 Feb 2013
Please Press "accept" if this answers your question
%% YOUR EXAMPLE A = [... -2 1 2; 1 2 3; 3 1 2; 4 3 4; 1 1 2]; a = [1,2];
fn = @(A,a)(sum(A(:,end-size(a,2)+1:end)==repmat(a,size(A,1),1),2)==size(a,2)); % anonymous function
>> fn(A,a)
ans =
1
0
1
0
1
%% ANOTHER EXAMPLE
A = [...
-2 1 2 3 ;
1 2 3 3;
3 1 2 4;
4 3 4 4;
1 1 2 3];
a = [1,2,3];
>> fn(A,a)
ans =
1
0
0
0
1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!