Number of Elements Between 2 Elements in a matrix.
    3 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    s.v.
 am 2 Feb. 2018
  
    
    
    
    
    Beantwortet: Star Strider
      
      
 am 2 Feb. 2018
            Say I have a 3x5 matrix of zeros.
M = zeros(3,5)
00000
00000
00000
I change two elements in the matrix so the following happens.
M(1,3) = 1
M(3,3) = 2
00100
00000
00200
How do I count the number of elements between "1" and "2"?
Like below, it would be 11 elements within the brackets.
00[100
00000
002]00
As little lines of code as possible would be appreciated! Thank you.
0 Kommentare
Akzeptierte Antwort
  Star Strider
      
      
 am 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
Result =
    11
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.
0 Kommentare
Weitere Antworten (1)
  James Tursa
      
      
 am 2 Feb. 2018
        
      Bearbeitet: James Tursa
      
      
 am 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.
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


