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)

Categories

Find more on Language Fundamentals in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!