如何在matlab中计算人脸识别的MDA
How to calculate MDA for face recognition in matlab
我想做PCA,然后做MDA(多重判别分析),以便将数据集的维度从99^2减少到49(人脸识别)。
我的第一步是通过 PCA 将维度从 99^2 减少到 50。现在我想使用 MDA 从 c 减少到 c-1 -> 从 50 到 49。
我试过这段代码,但我在 'Answer' 中得到了复杂的值,这是错误的。
% calculate PCA
mat_mean = mean(trainData(:));
normalized_train = trainData - mat_mean;
A = normalized_train/std(normalized_train(:));
S1 = A * A';
[V,Z] = eigs(S2,50);
Wpca = A'*V*Z;
% calculate MDA
[Sb,Sw] = scattermat(Wpca);
Sb1=Wpca*Sb*Wpca';
Sw1=Wpca*Sw*Wpca';
[Answer,ready1] = eigs(Sb1,Sw1,49);
有什么建议我做错了什么吗?
原因是"eigs"计算矩阵的特征值,其中包括SQRT...而我在Sb,Sw中有负值
我想做PCA,然后做MDA(多重判别分析),以便将数据集的维度从99^2减少到49(人脸识别)。
我的第一步是通过 PCA 将维度从 99^2 减少到 50。现在我想使用 MDA 从 c 减少到 c-1 -> 从 50 到 49。 我试过这段代码,但我在 'Answer' 中得到了复杂的值,这是错误的。
% calculate PCA
mat_mean = mean(trainData(:));
normalized_train = trainData - mat_mean;
A = normalized_train/std(normalized_train(:));
S1 = A * A';
[V,Z] = eigs(S2,50);
Wpca = A'*V*Z;
% calculate MDA
[Sb,Sw] = scattermat(Wpca);
Sb1=Wpca*Sb*Wpca';
Sw1=Wpca*Sw*Wpca';
[Answer,ready1] = eigs(Sb1,Sw1,49);
有什么建议我做错了什么吗?
原因是"eigs"计算矩阵的特征值,其中包括SQRT...而我在Sb,Sw中有负值