Sum if conditions are satisfied across arrays

2 views (last 30 days)
Hello everyone,
Kinda stuck. Scenario is:
I have a binary 2D array that is n rows and m columns.
I want to count how many times an element went from being a '1' in one row, to a '0' in the next row, and store it as a vector.
I have updated an illustration to help.
Would really appreciate an efficient and simple solution, cheers.
  2 Comments
Matt J
Matt J on 14 Feb 2018
I have a binary 2D array that is m rows and n columns.
According to your diagram, n is the number of rows, not columns.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 14 Feb 2018
Edited: Matt J on 14 Feb 2018
result = sum(diff(array,1,1)==-1 ,1)
  3 Comments
Matt J
Matt J on 14 Feb 2018
In that case,
result = sum( diff(array,1,1)==-1 ,2)
Abhishek Varghese
Abhishek Varghese on 14 Feb 2018
Edited: Abhishek Varghese on 14 Feb 2018
Related Question:
Hey Matt, still currently optimising my code. Would love further help.
Considering that I have the adjacency matrix:
adj = [0 1 1 1
1 0 0 1
1 0 0 1
1 1 1 0];
and a binary matrix:
array = randi([0 1],4,10)
where the columns are each node in the network, and the rows for the state of the network at each time step. To clarify, if node 1 is '1' at time step 2, it would be like
array(2,1) = 1
What would I do, to create a vector of values that satisfied the same condition as my initial question, and also satisfy the condition of not having any infected neighbours in the same time step??
EDIT: An infection is considered a 1, no infection a 0
EDIT2: I have decided that perhaps its best to create another question. Please find the question here:
To receive credit for the answer! Cheers -Abhishek.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!