Dal momento che non hai pubblicato il codice o, almeno la parte rilevante, si può solo provare a dare delle indicazioni di massima.
Molto dipende da come crei i le aree e come memorizzi le loro posizioni (coordinate).
Non è chiaro, ad esempio, come gestisci la creazione dei vari quadrati: li crei sempre, anche se un'entità si trova già all'interno di un quadrato creato in precedenza?
Immagino che tu abbia un loop principale e, ad ogni iterazione costruisci un quadrato per ognuna delle entità.
Immagino anche che le coordinate dei vari quadrati vengano memorizzate in una matrice (se non è così dovresti farlo).
La cosa più semplice che puoi fare è, dopo aver calcolato la posizione dell
A questo punto, ad ogni iterazione potresti verificare se / quante entità siano all'interno dei vari quadrati usando la funzione "inpolygon" alle quale passi le coordinate dell'entità e, in un loop, quelle dei quadrati che hai, via via creato.
Potresti, quindi creare un vettore con questa "regola": ogni elemento del vettore corrisponde, nell'ordine. ad uno dei quadrati che hai creato.
In questo modo il primo elemento corrisponderà al primo quadrato, il secondo al secondo e così via (se hai memorizzato le coordinate dei vari quadrati in una matrice, ogni elemento corrisponderà, nell'ordine, ad una riga (o colonna) della matrice.
Se la i-esima entità si trova all'interno di uno dei quadrati, la funzione inpolygon ti restituirà il valore "logical " 1, con un "if" puoi intercettare questo fatto ed incrementare di una una unità il valore del corrispondente elemento del vettore.