Logical vector based on matrix rows
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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])?
0 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 22 Feb. 2013
Bearbeitet: Azzi Abdelmalek
am 22 Feb. 2013
out=ismember(A(:,2:end),[1 2],'rows')'
0 Kommentare
Weitere Antworten (1)
Mark Whirdy
am 22 Feb. 2013
Bearbeitet: Mark Whirdy
am 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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!