0

MATLAB には、有限数の点で表される XY 平面があります。x の可能な値はベクトル X に格納され、y の可能な値は別のベクトル Y に格納されます。A(1) が X に属し、A(2 ) Y に属するのは y 座標です。

この点 A は、中央にある場合、次の 8 つの方法のいずれかで移動できます。

          .   .   .                      .   A                .    .

          .   A   .        OR            .   .       OR       .    A

          .   .   .                                           .     .

もちろん、点 A がエッジ上にある場合、これらの点のセットは変化します (5 つだけの場合もあれば、コーナーの場合は 3 つだけの場合もあります)。これらの「1ホップ」の隣接ポイントのセットを見つけるにはどうすればよいですか? 「k-hop」隣接ポイントのセットはどうですか? セットとは、x 座標用と y 座標用の 2 つのベクトルを意味します。ありがとう!

4

2 に答える 2

1

次のコードを検討してください。

%# create grid of 2D coordinates
sz = [5 6];
[X,Y] = meshgrid(1:sz(2),1:sz(1));

%# point A
A = [1 2]

%# neighboring points
k = 2;                               %# hop size
[sx,sy] = meshgrid(-k:k,-k:k);       %# steps to get to neighbors
xx = bsxfun(@plus, A(1), sx(:));     %# add shift in x-coords
xx = min(max(xx,1),sz(2));           %# clamp x-coordinates within range
yy = bsxfun(@plus, A(2), sy(:));
yy = min(max(yy,1),sz(1));
B = unique([xx yy],'rows');          %# remove duplicates
B(ismember(B,A,'rows'),:) = [];      %# remove point itself

ホップのあるポイントの結果A = (1,2):k=2

B =
     1     1
     1     3
     1     4
     2     1
     2     2
     2     3
     2     4
     3     1
     3     2
     3     3
     3     4

およびソリューションの図:

x A x x . .
x x x x . .
x x x x . .
. . . . . .
. . . . . .
于 2012-06-21T07:16:56.217 に答える
0

まあ言ってみればA = [Xcenter Ycenter]

K-hop の場合、次のポイントにアクセスできます。

pointsX = [];
pointsY = [];
for i=-k:k
  pointsX = [pointsX  Xcenter+i]; 
  pointsY = [pointsY  Ycenter+i];
end

さらに、これらのポイントを次数座標でフィルタリングし、外れ値を削除できます。例えば考慮

(1,1)  (1,2)  (1,3)
(2,1)  (2,2)  (2,3)
(3,1)  (3,2)  (3,3)

これで、X と Y の最小許容値が 1 であることがわかったので、それよりも小さい縦座標および/または横座標を持つポイントを除外します。

于 2012-06-21T01:56:28.150 に答える