How to solve the following exercise?
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Ellen De Jonghe
 il 14 Gen 2020
  
    
    
    
    
    Modificato: Andrei Bobrov
      
      
 il 14 Gen 2020
            Hye! 
I have to solve the following problem:
Consider a matrix M with only the numbers 1 to 9 as elements. 
M =
     2     9     3     2     4
     8     6     4     8     5
     5     7     1     6     4
     9     8     9     5     1
Consider one of the elements M(i,j) that's not on the edge of the matrix. Such element always has 8 neighbours. If M(i,j) > 1 and each number from 1 to M(i,j)-1 is one of the 8 neighbours, we say that element is neighboring. If M(i,j) = 1, the element is automatically neighboring. 
For example, M(2,2) is neighboring because 1,2,3,4 and 5 are one of the element's neighbours. M(3,4) on the other hand isn't neighboring because 2 and 3 don't occur around the element. 
Now, I have to write a function that has 3 inputs: a matrix M and a row- and column index. The function has to control whether de element is neighboring or not and has a logical 0 or 1 as output. 
9 Commenti
  Guillaume
      
      
 il 14 Gen 2020
				@Ellen, you've got the correct algorithm. As you suspec and Bob pointed out, the construction of n can be done in just one line with simple indexing.
@Bob, no the code also works for 1. m would be empty, so ismember will return empty. sum(empty) is 0 which is also the length of empty.
For the record, the one-liner I was talking about is
res = all(ismember(1:matrix(row, col)-1, matrix(row-1:row+1, col-1:col+1)))
Risposta accettata
  Andrei Bobrov
      
      
 il 14 Gen 2020
        
      Modificato: Andrei Bobrov
      
      
 il 14 Gen 2020
  
      function out = find_neighbor(M,i,j)
    out = all(ismember(1:M(i,j)-1,M(i-1:i+1,j-1:j+1)));
end
2 Commenti
  Guillaume
      
      
 il 14 Gen 2020
				The if is not needed, out is true anyway, if M(i,j) is 1, since all([]) is true.
Più risposte (1)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!