0

散布アルゴリズムを介して3セットのポイントをランダムに生成しましたが、アルゴリズムは次のとおりです

M = randi(1000,200);
AP = randi(1000,12);
BS = randi(1000,7);
scatter(M(:,1),M(:,20),21,'b.'); hold on
scatter(AP(:,1),AP(:,9),80,'k*');hold on
scatter(BS(:,1),BS(:,4),'r');hold off

ここで、AP のカバレッジ エリアを設定し、カバレッジ エリア内にある AP と M の間の距離を分析する必要があります。誰でも私を助けることができますか?

4

1 に答える 1

0

最初に AP のカバレッジ エリアを抽出します。

ExtractedM=[M(:,1) M(:,20)];
ExtractedAP=[AP(:,1) AP(:,9)];%Just creating two different matrices for plotted points

%calculating coverage area of AP i.e. bounding box for coordinates of AP
yMax=max(ExtractedAP(:,2));
yMin=min(ExtractedAP(:,2));
xMax=max(ExtractedAP(:,1));
xMin=min(ExtractedAP(:,1));

%Finding the points from M which lie in the coverage area of AP
[positionBoundedPointsMx1,dummy]=find(ExtractedM(:,1)>=xMin & ExtractedM(:,1)<=xMax);
[positionBoundedPointsMx2,dummy]=find(ExtractedM(:,2)>=yMin & ExtractedM(:,2)<=yMax);
positionBoundedPointsMx=intersect(positionBoundedPointsMx1,positionBoundedPointsMx2,'rows');
boundedPointsM=ExtractedM(positionBoundedPointsMx,:);

%Making sure that correct sets of points in M have been extracted
scatter(M(:,1),M(:,20),21,'b.'); hold on
scatter(AP(:,1),AP(:,9),80,'k*');hold on
scatter(BS(:,1),BS(:,4),'r');hold on;
scatter(boundedPointsM(:,1),boundedPointsM(:,2),'ko');

M で抽出されたポイントは、黒い円内の青い点で表されます。M のすべての点が AP のカバレッジ エリア内にあるため、正しく見えます。

さて、何を計算したいのかわかりません。2点間のユークリッド距離を計算したいだけだと仮定すると、ExtractedAPboundedPointsMをベクトルに変換して使用しましたpdist2

ExtractedAP_Vec=ExtractedAP(:);  %24x1 vector 
boundedPointsM_Vec=boundedPointsM(:);  %224x1 vector

%calculate distance between each point of 'ExtractedAP_Vec' and every point in 'boundedPointsM_Vec'.
dist_AP_M=pdist2(ExtractedAP_Vec,boundedPointsM_Vec); 

PS散布図をプロットし、自分で確認してください。ここに画像を投稿することはできません、申し訳ありません。

于 2012-08-11T20:21:52.457 に答える