La cosa più semplice che puoi fare:
[*] definire la griglia come (bisogna sostituire le chiamate alla funzione "randi" con i valori opportuni):
% Valore minimo della coordinata "x"
xmin=randi(5)
% Valore minimo della coordinata "y"
ymin=randi(5)
% Numero di celle sull'asse x
n_cell_x=100
% Numero di celle sull'asse y
n_cell_y=100
% Coordinate X delle celle
xt=linspace(xmin,xmax,n_cell_x+1)
% Coordinate Y delle celle
yt=linspace(ymin,ymax,n_cell_y+1)
Date le coordinate del punto
[*] trovare, tra le coordinate "x" della griglia, il massimo valore inferiore al valore della coordinata "x" del punto
[*] trovare, tra le coordinate "Y" della griglia, il massimo valore inferiore al valore della coordinata "y" del punto
% Identificazione massimo valore inferiore al valore della coordinata "x" del punto
x_idx=max(find(xt <= xp))
% Identificazione massimo valore inferiore al valore della coordinata "y" del punto
y_idx=max(find(yt <= yp))
A questo punto, le coordinate della cella all'interno della quale si trova il punto saranno:
cell_x=[xt(x_idx) xt(x_idx+1)]
cell_y=[yt(y_idx) yt(y_idx+1)]
[*] Numerare idealmente le celle della griglia in modo crescente partendo dalla prima in basso a sinistra e proseguendo lungo le ascisse e poi passando a quelle della seconda riga
In questo modo avendo una griglia 10 x 10 la cella numero 13 sarà la terza della seconda riga partendo dal basso
Il numero della cella nella quale si trova il punto sarà
cell_n=n_cell_x*(y_idx-1)+x_idx
Il codice che segue, illustra un esempio completo del codice
xmin=randi(5)
inc_x=randi(33)
xmax=xmin+inc_x
ymin=randi(5)
inc_y=randi(33)
ymax=ymin+inc_y
n_cell_x=10
n_cell_y=10
xt=linspace(xmin,xmax,n_cell_x+1)
yt=linspace(ymin,ymax,n_cell_y+1)
rectangle('position',[xmin ymin inc_x inc_y],'edgecolor','r','linewidth',2)
hold on
xlim([xmin*.5 xmax*1.5])
ylim([ymin*.5 ymax*1.5])
%grid
for i=1:length(xt)
plot([xt(i) xt(i)],[ymin ymax],'k')
end
for i=1:length(yt)
plot([xmin xmax],[yt(i) yt(i)],'k')
end
if(exist('hp'))
delete(hp)
end
xp=xmin+rand*inc_x
yp=ymin+rand*inc_y
hp=plot(xp,yp,'o','markerfacecolor','k')
x_idx=max(find(xt <= xp))
y_idx=max(find(yt <= yp))
cell_x=[xt(x_idx) xt(x_idx+1)]
cell_y=[yt(y_idx) yt(y_idx+1)]
cell_n=n_cell_x*(y_idx-1)+x_idx