MATLAB Answers


Find out if X out of Y elements of an array are true

Asked by A VP
on 31 May 2019
Latest activity Commented on by A VP
on 3 Jun 2019
I have an array of 5 elements. The array is updated at any index (1,2,3,4,5) in each simulation time to a value TRUE or FALSE. In the next function, I should check if 4 out of 5 elements including the last updated element of the array are TRUE. Is there a way to check this?


Sign in to comment.

2 Answers

Answer by Jos (10584)
on 31 May 2019
 Accepted Answer

Let TF be your logical array and X the index of the last updated element then
ConditionIsMet = TF(x) && sum(TF) == 4
will be true if your condition is met.

  1 Comment

This works. Thank you.

Sign in to comment.

Answer by Arvind Sathyanarayanan on 31 May 2019
Edited by Arvind Sathyanarayanan on 31 May 2019

You can do something like this :
X=sum(Array(:) == 1);
if X>=4
disp('4 or more elements are true')
If they are 1s and 0s, you can just count the non zero elements using the nnz() function.


This solves part of my question to check if sum >= 4, but does not consider the head index that was last updated. The answer posted below solved the problem.
Thank you.
Logically, when one element changes at a time, (let's say, the k-th), the condition that 4 out of 5 are ture, is met can only happen when that element has become true. So, logically, that check is not really necessary ...
Ok. This is a new learning to me. Thank you.

Sign in to comment.