0

私は matlab でアルゴリズムを実装しようとしています。このアルゴリズムは一連のポイントとそのサブセットをアンカー ポイントと呼び、アルゴリズムは次のように機能します。

  1. 最も遠い 2 つのアンカー ポイントを見つける
  2. 各ポイントを最も近いアンカー ポイントに関連付けて、ポイントを 2 つのグループに分割します。
  3. 各グループのアンカー ポイントが 1 つだけになるまで、プロセスを再帰的に繰り返します。
  4. 1 つのアンカー ポイントを持つグループを返します

問題は、グループが定式化されているにもかかわらず、MatLab が参照による配列の変更を許可していないことです。適切な方法でそれらを返すことはできません。

どうすればこの問題を克服できますか??

以下は私のコードです:

function [part1, part2, part1anchors, part2anchors] = iterativeSpletting(points, anchors)
dist = @(a, b) ((a.xd - b.xd) ^ 2 + (a.yd - b.yd) ^ 2) ^ 0.5;

%find farthest two anchors
[ch1, ch2] = FarthestPoints(anchors);

%find parts
for i = 1:numel(points)
    if (dist(points(i), ch1) <= dist(points(i), ch2))
        part1 = [part1, points(i)];
    else
        part2 = [part2, points(i)];
    end
end

%assing anchors to parts
for i = 1:numel(anchors)
    if (dist(anchors(i), ch1) <= dist(anchors(i), ch2))
        part1anchors = [part1anchors, anchors(i)];
    else
        part2anchors = [part2anchors, anchors(i)];
    end
end

if numel(part1anchors) == 1
    %how to return the part    
else
    iterativeSpletting(part1, part1anchors)
end

if numel(part2ch2) == 1
    %how to return the part
else
    iterativeSplitting(part2, part2anchors)
end
end
4

1 に答える 1