如何在matlab中计算人脸识别的MDA

时间:2015-01-19 14:38:55

标签: matlab machine-learning pca face-recognition reduction

我想进行PCA,然后进行MDA(多重判别分析),以便将数据集的维度从99 ^ 2减少到49(面部识别)。

我的第一步是通过PCA将尺寸从99 ^ 2缩小到50。现在我想使用MDA从c减少到c-1 - >从50到49。 我已经尝试过这段代码但是我在“答案”中得到了复杂的值,这是错误的。

%   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);

有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:0)

原因是“eigs”计算矩阵的特征值,其中包括SQRT ......我在Sb中有负值,Sw