Red de conocimiento informático - Aprendizaje de programación - En Matlab, aa es una matriz de mil por mil, para cualquier punto conocido, ¿cómo se encuentran los puntos cercanos a él mediante programación?

En Matlab, aa es una matriz de mil por mil, para cualquier punto conocido, ¿cómo se encuentran los puntos cercanos a él mediante programación?

La imagen es muy grande y llevará mucho tiempo juzgar todos los puntos.

Sin embargo, si solo se apunta a un punto, el rango de filas y columnas al que afecta no excederá más o menos 5

Entonces, podemos crear una plantilla de -5 a 5 tanto vertical como horizontal

Primero calcula el desplazamiento del punto que cumple con los requisitos

Luego, toma p no importa qué, q, los puntos afectados se pueden obtener de estas compensaciones

No importa qué se elija p, q en el futuro, los puntos afectados se pueden obtener de estas compensaciones

[ di,dj]=meshgrid(-5:5);

temp=(sqrt(di.^2+dj.^2)<=5);

di=di (temp); %Obtener el desplazamiento de la primera dimensión

dj= dj(temp); %Obtener el desplazamiento de la segunda dimensión

%El desplazamiento de la plantilla anterior solo debe calcularse una vez;

%El siguiente cálculo se realiza una vez para cada punto (p,q) dado

%Si se da un punto (p,q), entonces todas las coordenadas son

ii=p+di; jj=q+dj;

temp=( ii>=1&ii<=1000&jj>=1&jj<=1000);% considerado No puede exceder el límite

ii=ii(temp);jj=jj(temp);

ind = sub2ind([1000 1000],ii,jj );% Para facilitar su uso, convierta i,j double para encontrar único

a(ind)=a(ind)*2; % cambio completo

Tenga en cuenta que para cada punto dado así (p,q), multiplicado por 2 es un área circular

Si las áreas circulares se superponen, la parte superpuesta se duplicará