📄 lda.txt
字号:
function [W]=lda(Data,NumPerClass,NumOfClass)
[W1,neig1]=makebasis(Data);
Wpca=W1(:,1:neig1);
%Data1=Wpca'*(Data-mean(Data,2));
Data1=Wpca'*(Data-repmat(mean(Data,2),1,360));
[rowData,colData] = size(Data1);
Miu=mean(Data1,2);
for i=1:NumOfClass
Miu1(:,i)=mean(Data1(:,NumPerClass*(i-1)+1:NumPerClass*i),2);
end
SB=zeros(rowData,rowData);
SW=zeros(rowData,rowData);
for i=1:NumOfClass
SB=SB+1/NumOfClass*(Miu1(:,i)-Miu)*(Miu1(:,i)-Miu)';
end
for i=1:NumOfClass
SW1=zeros(rowData,rowData);
for j=NumPerClass*(i-1)+1:NumPerClass*i
SW1=SW1+1/NumOfClass*(Data1(:,j)-Miu1(:,i))*(Data1(:,j)-Miu1(:,i))';
end
SW=SW+SW1;
end
[V,D] = eig(SB,SW);
eigenvalues = diag(D);
[eigenvalues_sort, index] = sort(eigenvalues,'descend');
% [eigenvalues, index] = sort(abs(eigenvalues));
eigenvec_sort=V(:,index);
for c=1:size(eigenvec_sort,2)
W2(:,c) = eigenvec_sort(:,c)/norm(eigenvec_sort(:,c)); % A is the eigenvector matrix sorted with respect to the eigenvalues.
end
W=Wpca*W2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -