我有一个3D点坐标矩阵A,所以A的大小是N乘3,其中N是点数。我为20个邻居做了一个关于A的knnsearch,并得到了一个索引矩阵idN,它是N乘以21.然后我想用它的20个邻居计算每个点的PCA。例如,矩阵A中的第一个点,它将是
pca(A(idN(1,2:end),:))
我想计算所有这些点。我可以使用循环来执行此操作,但是当点数很高时它将非常慢。有没有办法可以在不使用循环的情况下计算pca,或者至少有一种方法可以让这个过程更快?
循环部分代码
idN = knnsearch(A,A,'k',21);
result = zeros(N,12);
for i = 1:N
[coef,~,latent] = pca(A(idN(i,2:end),:));
result(i,1:9) = coef(:)';
result(i,10:12) = latent';
end