我有一个矩阵,其第一列为 X,第二列为 Y,第三列为 Z(来自地球的点云)。它们之间是异常值,即非常向下或非常外部的点(由于系统误差)。我创建一个距离矩阵并使用以下代码计算每个点到所有其他点的距离:
xl = selected(:,1);
yl = selected(:,2);
zl = selected(:,3);
distanceMatrix = zeros(size(selected,1));
x = [xl(:)'; yl(:)'; zl(:)'];
IP = x' * x;
distanceMatrix = sqrt(bsxfun(@plus, diag(IP), diag(IP)') - 2 * IP);
selectedl
是我的矩阵。并计算每个点的邻居并说:只有 1 或 2 个邻居的点是异常值。但是:由于我的矩阵太大(考虑矩阵的大小),我的笔记本电脑无法处理(内存不足:4G!)
是否有一种方法、函数或代码可以在不计算距离矩阵的情况下自动计算异常值?