Main Content

許容誤差を使用した類似するデータ点の平均化

この例では、uniquetol を使用して類似する (許容誤差内の) x 座標および y 座標をもつ 3 次元の点の z 座標の平均を求める方法を示します。

データセットとして領域 [-3,3]×[-3,3] における関数 peaks から抽出した乱数点を使用します。データに少量のノイズを追加します。

xy = rand(10000,2)*6-3; 
z = peaks(xy(:,1),xy(:,2)) + 0.5-rand(10000,1);
A = [xy z];
plot3(A(:,1), A(:,2), A(:,3), '.')
view(-28,32)

Figure contains an axes object. The axes object contains an object of type line.

uniquetol を以下のオプションで使用して類似する x 座標および y 座標をもつ点を求めます。

  • A の行に点座標が含まれるため、ByRowstrue に指定します。

  • 互いの許容誤差内にあるすべての点のインデックスを返すため、OutputAllIndicestrue に指定します。

  • x 座標および y 座標には絶対許容誤差を使用し、z 座標は無視するように、DataScale[1 1 Inf] に指定します。

DS = [1 1 Inf];
[C,ia] = uniquetol(A, 0.3, 'ByRows', true, ...
    'OutputAllIndices', true, 'DataScale', DS);

z 座標を含め、許容誤差内の各点群を平均化して、元のデータの全体的な形状を保ったままデータ量を減らしたデータセットを生成します。

for k = 1:length(ia)
    aveA(k,:) = mean(A(ia{k},:),1); 
end

元データの上に平均化された点をプロットします。

hold on
plot3(aveA(:,1), aveA(:,2), aveA(:,3), '.r', 'MarkerSize', 15)

Figure contains an axes object. The axes object contains 2 objects of type line.

参考

関連するトピック