ich eine bestimmte Anzahl von zufälligen Kreisen durch die Abstände zwischen 3 und 25Matlab: x Punkte mit gleicher Entfernung findet
Also, jedem Kreis, wenn der Radius 5, getrennt dargestellt werden soll, die Abstände zwischen ihren Zentren muss zwischen 13 und 35
Hier ist mein aktueller Code ist, funktioniert aber nicht:
ok=false;
while 1
x = 100 * rand(100,1);
y = 100 * rand(100,1);
A = pdist2([x,y],[x,y]);
test1 = (A > 3 + size*num_clusters);
test2 = A < 30 + size*num_clusters;
test3 = test1.*test2;
num_clusters = 3;
for i=1:length(x)
sum(test3(i,:))
if sum(test3(i,:)) > num_clusters
logic = test3(i,:);
logic = find(logic);
logic = logic';
x = x(logic);
y = y(logic);
ok=true;
break
end
if ok
break
end
end
if ok
break
end
end
X(1:num_clusters,1) = x(1:num_clusters);
X(1:num_clusters,2) = y(1:num_clusters);
Wenn der Radius jedes Kreises 5 ist, sollten Sie sie durch 5 (Radiuskreis links) + 5 (Radiuskreis rechts) + 3 (Mindestabstand) = 13, nicht 8 trennen. Habe ich bekommen, was Sie wollen? –
Ja, es ist richtig! – gpbdr13
Geben Sie an, warum "es nicht funktioniert". Es gibt offensichtliche Programmierfehler (Größe ohne Argument, num_cluster vor der Erstellung aufgerufen, etc ..). Haben Sie diesen Code kopieren kopieren und Sie müssen es funktioniert, oder der Code läuft, aber es gibt konzeptionelle Probleme im Algorithmus? –