Number of Elements Between 2 Elements in a matrix.
4 views (last 30 days)
Say I have a 3x5 matrix of zeros.
M = zeros(3,5)
I change two elements in the matrix so the following happens.
M(1,3) = 1
M(3,3) = 2
How do I count the number of elements between "1" and "2"?
Like below, it would be 11 elements within the brackets.
As little lines of code as possible would be appreciated! Thank you.
Star Strider on 2 Feb 2018
MATLAB uses column-major ordering, so it ‘counts’ elements column-wise, and it is necessary to transpose ‘M’ to do what you want.
M = zeros(3,5);
M(1,3) = 1;
M(3,3) = 2;
idx = find(M');
Result = diff(idx)+1
These can be combined into a one-line assignment:
Result = diff(find(M'))+1
It is necessary to add 1, because diff does not take into account the initial or final element when it does its subtraction.
More Answers (1)
James Tursa on 2 Feb 2018
Edited: James Tursa on 2 Feb 2018
Assuming the matrix has exactly two nonzero entries:
M = your matrix
f = find(M'); % Transpose to get the row data into column order
result = f(2) - f(1) + 1;
If you can't guarantee that there are exactly two nonzero entries, then you will have to add in appropriate checks etc and tell us what you would want for a result in that case.