matlab实现线性判别分析如何排除方差为0的数据

How to exclude data with 0 variance in matlab implementation of Linear discriminant analysis

我正在使用 Matlab 使用 LDA 对数据进行分类。

  mdl = fitcdiscr(dbimgs1,indx,'DiscrimType','linear');
  C=predict(mdl,testimgs1);

我收到以下错误:

Predictor x741 has zero variance. Either exclude this predictor or set 'discrimType' to 'pseudoLinear' or 'diagLinear'.

我不想使用 'pseudoLinear' 或 'diagLinear',因为它会降低性能。如何排除零预测变量?

  delete_id=[];
  for id_var_chk=1:size(dbimgs1,2)
      if(var(dbimgs1(:,id_var_chk))<1)
             delete_id=[delete_id,id_var_chk]
      end
  end

循环检查每一列的方差。然后通过以下方式删除具有低方差的值:

 dbimgs1(:,delete_id_1(i))=[];