如何在以下 PCA 的 Matlab 代码中动态查找数字组件?

how to find number components dynamically such given in following Matlab code of PCA?

下面link固定数量的主成分分析参数是预定义的,但应动态定义为Matlab代码。怎么可能?

https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

如何动态查找主成分的数量,如 Matlab 代码中给出的那样:

[coeff,score,~,~,explained] = pca(train);            
sm = 0;
no_components = 0;
for k = 1:size(explained,1)
    sm = sm+explained(k);
    if sm <= 99.4029
       no_components= no_components+1;
    end
end
no_components

这里的训练变量是一个二维矩阵。

我得到的 MatLab 和 python 的解释变量略有不同,因此解决如下:

[x,y] = train.shape

pca = PCA(n_components=(x-1))
varPca = pca.fit(train)   

explainedVariance = pca.explained_variance_ratio_*100

sm = 0
no_components = 0
for k in range(0, x-1):
    sm = sm+explainedVariance[k]        
    if sm <= 99.4029:
        no_components= no_components+1    

print(no_components)