Matlab中PCA的矢量化

时间:2017-02-21 20:44:54

标签: matlab vectorization pca

我有一个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

0 个答案:

没有答案