Logical vector based on matrix rows

조회 수: 2 (최근 30일)
ARS
ARS 2013년 2월 22일
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])?

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 2월 22일
편집: Azzi Abdelmalek 2013년 2월 22일
out=ismember(A(:,2:end),[1 2],'rows')'

추가 답변 (1개)

Mark Whirdy
Mark Whirdy 2013년 2월 22일
편집: Mark Whirdy 2013년 2월 22일
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

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by