Logical vector based on matrix rows

3 次查看(过去 30 天)
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