⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lda_dep.m

📁 patten regnization source从1-14章能运行
💻 M
字号:
% ==================================================================== 
%	努贰胶 辆加-LDA (Linear Discriminant Analysis) 矫鼓饭捞记 橇肺弊伐
% ====================================================================
clear all
% 单捞磐甸阑 肺靛茄促. 
load class1.dat;
load class2.dat;
load class3.dat;
load data.dat; % data.dat = class1.dat + class2.dat + class3.dat
load test_data.dat;

% 绵家且 瞒盔阑 沥窍绰 q 甫 涝仿罐绰促. 
q =input('Input value to reduce to: ');

% 搬苞甫 历厘且 颇老阑 汲沥茄促.
FID = fopen('results','w');

[x,feature_num] = size(data);	 

% 漂隆 氦磐甸狼 荐甫 掘绰促.
[num_test_vectors,x] = size(test_data);
[num_class1_vect,x] = size(class1);
[num_class2_vect,x] = size(class2);
[num_class3_vect,x] = size(class3);

% 醚 单捞磐 笼钦苞 阿 努贰胶狼 乞闭阑 拌魂茄促.
data_mean=mean(data);
class1_mean=mean(class1);
class2_mean=mean(class2);
class3_mean=mean(class3);

% 阿 努贰胶俊 措茄 努贰胶郴 盒魂(Sw)阑 拌魂茄促.
class1_cov=cov(class1);
class2_cov=cov(class2);
class3_cov=cov(class3);

% 努贰胶埃 盒魂(Sb)阑 拌魂茄促.
data_cov=cov(data);

% 阿 努贰胶狼 开 傍盒魂 青纺(class_cov)苞 努贰胶埃 盒魂阑 蚌茄 货肺款 漂隆 氦磐甫 拌魂茄促.
class1_features=inv(class1_cov)*data_cov;
class2_features=inv(class2_cov)*data_cov;
class3_features=inv(class3_cov)*data_cov;

% 阿 努贰胶俊 措茄 绊蜡氦磐客 绊蜡蔼阑 茫绰促.(eig 捞侩)
[eigen_vect_class1, eigen_val_class1]=eig(class1_features);
[eigen_vect_class2, eigen_val_class2]=eig(class2_features);
[eigen_vect_class3, eigen_val_class3]=eig(class3_features);

eigen_vect_all = [eigen_vect_class1; eigen_vect_class2; eigen_vect_class3];  

% 秒且 绊蜡 氦磐客 滚副 绊蜡氦磐甫 搬沥茄促.
% 促澜 内靛绰 烙矫肺 绊蜡蔼 青纺狼 措阿己盒栏肺何磐 沥纺窍扁 傈俊 
% 烙矫肺 啊瘤绊 乐阑 1xfeature_num 青纺阑 父电促.
for k=1:feature_num	
    temp_eigen_val_all(k) = eigen_val_class1(k,k);	
end;
for k=1:feature_num	
    temp_eigen_val_all(k+feature_num) = eigen_val_class2(k,k);	
end;
for k=1:feature_num	
    temp_eigen_val_all(k+2*feature_num) = eigen_val_class3(k,k);
end;

% 烙矫 绊蜡蔼 青纺肺何磐 绊蜡氦磐 青纺甫 沥纺茄促.
for k=1:2*feature_num						
    [row,col] = find(temp_eigen_val_all == max(temp_eigen_val_all));
    ordered_eigen_vect_all(k,:) = eigen_vect_all(col,:);
    temp_eigen_val_class1(col) = -10000;
end;

% 沥纺等 绊蜡氦磐 青纺俊辑 绵家且 q俺肺 函券 青纺阑 父电促 
for n=1:q
    transform_class_all(n,:) = ordered_eigen_vect_all(n,:);		
end;

%========================================================================
% 阿 努贰胶狼 切嚼 单捞磐甫 函券 青纺阑 烹窍咯 绵家茄促. 
% 弊府绊 绵家等 漂隆 氦磐狼 乞闭阑 备茄促. 

% 努贰胶1
temp_mean1=0;		%函荐 檬扁拳 
for n=1:num_class1_vect
    temp_class1 = class1(n,:);
    reduced_class1_features = transform_class_all*transpose(temp_class1);
    reduced_class1_features = transpose(reduced_class1_features);
    temp_mean1 = temp_mean1 + reduced_class1_features;
    temp_class1 = 0;
end;
% 努贰胶1 漂隆甸狼 乞闭阑 拌魂茄促. 
mean_reduced_class1_features = temp_mean1/num_class1_vect;

% 努贰胶2
temp_mean2=0;		%函荐 檬扁拳 
for n=1:num_class2_vect
    temp_class2 = class2(n,:);
    reduced_class2_features = transform_class_all*transpose(temp_class2);
    reduced_class2_features = transpose(reduced_class2_features);
    temp_mean2 = temp_mean2 + reduced_class2_features;
    temp_class2 = 0;
end;
% 努贰胶2 漂隆甸狼 乞闭阑 拌魂茄促. 
mean_reduced_class2_features = temp_mean2/num_class2_vect;

% 努贰胶3
temp_mean3=0;		%函荐 檬扁拳 
for n=1:num_class3_vect
    temp_class3 = class3(n,:);
    reduced_class3_features = transform_class_all*transpose(temp_class3);
    reduced_class3_features = transpose(reduced_class3_features);
    temp_mean3 = temp_mean3 + reduced_class3_features;
    temp_class3 = 0;
end;
% 努贰胶3 漂隆甸狼 乞闭阑 拌魂茄促. 
mean_reduced_class3_features = temp_mean3/num_class3_vect;


%==============================================================
%	抛胶飘
for j=1:num_test_vectors	%抛胶磐 漂隆 氦磐甸俊 措茄 for 风橇 矫累
  temp_test_feature_vect = test_data(j,:);

%	CLASS 1
reduced_test_feature_vect_class1 = transform_class_all*transpose(temp_test_feature_vect);
reduced_test_feature_vect_class1 = transpose(reduced_test_feature_vect_class1);
class1_distance = reduced_test_feature_vect_class1 - mean_reduced_class1_features;

%	CLASS 2
reduced_test_feature_vect_class2 = transform_class_all*transpose(temp_test_feature_vect);
reduced_test_feature_vect_class2 = transpose(reduced_test_feature_vect_class2);
class2_distance = reduced_test_feature_vect_class2 - mean_reduced_class2_features;

%	CLASS 3
reduced_test_feature_vect_class3 = transform_class_all*transpose(temp_test_feature_vect);
reduced_test_feature_vect_class3 = transpose(reduced_test_feature_vect_class3);
class3_distance = reduced_test_feature_vect_class3 - mean_reduced_class3_features;

% 阿 努贰胶俊 措茄 芭府狼 农扁甫 茫绰促. 
mag_class1_distance =0;
mag_class2_distance =0;
mag_class3_distance =0;

for n=1:q
    squared1 = class1_distance(n) * class1_distance(n);
    mag_class1_distance = mag_class1_distance + squared1; %芭府狼 农扁阑 茫绰促.
    
    squared2 = class2_distance(n) * class2_distance(n);		     
    mag_class2_distance = mag_class2_distance + squared2; %芭府狼 农扁阑 茫绰促.

    squared3 = class3_distance(n) * class3_distance(n);
    mag_class3_distance = mag_class3_distance + squared3; %芭府狼 农扁阑 茫绰促.
end;
 

% 抛胶飘 单捞磐啊 绢蠢 努贰胶俊 加窍绰瘤狼 搬沥篮 弥家芭府阑 烹秦辑 搬沥茄促.  
distance_vect=[mag_class1_distance, mag_class2_distance, mag_class3_distance];
if min(distance_vect)==distance_vect(1)
   fprintf(FID,'Class 1\n');
end;
if min(distance_vect)==distance_vect(2)
   fprintf(FID,'Class 2\n');
end;
if min(distance_vect)==distance_vect(3)
   fprintf(FID,'Class 3\n');
end;
end; % 漂隆 氦磐甸狼 荐父怒 风橇甫 倒赴  for 巩狼 场

fclose all;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -