• 大小: 13KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-04
  • 语言: Matlab
  • 标签: matlab  特征提取  

资源简介

实现了基于matlab下的KL变换的详细代码,内容比较详细。

资源截图

代码片段和文件信息

function [tezhivectorJfeaflag]=kltransform(dataclassnumsfeanumsnumsofoneselfeanumspanju)
%特征提取
if(size(data2)~=feanums)
   data=data‘;
end
if(numsofone*classnums~=size(data1))
   disp(‘shu ru shu ju wei shu chu cuo‘)
   return;
end
if(panju<0|panju>7)
   sprintf(‘suo shu ru de panju ge shu bi xu zai %d he %d zhi jiannot %d‘17panju)
   return;
end
sw=zeros(feanumsfeanums);
rx=zeros(feanumsfeanums);
sb=zeros(feanumsfeanums);
classmean=zeros(classnumsfeanums);
totalmean=zeros(1feanums);
totalmean=mean(data);
a=zeros(feanumsfeanums);
plei=1.0/classnums;
zongnums=classnums*numsofone;
J=zeros(1feanums);
feaflag=zeros(1feanums);
vector=zeros(feanumsfeanums);
tezhi=zeros(1feanums);
for nums=1:classnums
   classmean(nums:)=mean(data((nums-1)*numsofone+1:nums*numsofone:));
end
for nums=1:classnums
   for geshu=(nums-1)*numsofone+1:nums*numsofone
      a=(data(geshu:)-classmean(nums:))‘*(data(geshu:)-classmean(nums:));
      sw=sw+a;
      rx=rx+(data(geshu:)-totalmean(1:))‘*(data(geshu:)-totalmean(1:));
   end
   sb=sb+(classmean(nums:)-totalmean(1:))‘*(classmean(nums:)-totalmean(1:));
end
sw=sw*plei/numsofone;

rx=rx/zongnums;
sb=sb*plei;

if(panju==1)
   [vectora]=eig(rx);% panju==1 zi xiang guan ju zhen kl bian huan
elseif(panju==2)
   [vectora]=eig(sw); %panju==2lei nei li san du ju zhen kl bian huan  
elseif(panju==3)
   if(det(sw)==0)
      disp(‘this critia does not worksw is singular‘)
      return;
   end
   [vectora]=eig(sb/sw); %panju==3sb/sw kl bian huan 
elseif(panju==4) %panju=4 lei ping jun xiang liang de zui you ya suo 
   [vectora]=eig(sw);
   baihua=zeros(feanumsfeanums);
   for feas=1:feanums
      baihua(:feas)=vector(:feas)/(a(feasfeas)^(1/2));
   end
   sbb=baihua‘*sb*baihua;
   [wa]=eig(sbb);
   vector=baihua*w;   
elseif(panju==5)      %panju=5lei jun zhi xin xi ti qu?
   [vectora]=eig(sw);   
  for feas=1:feanums
      J(1feas)=vector(:feas)‘*sb*vector(:feas);
      J(1feas)=J(1feas)/a(feasfeas);
  end
elseif(panju==6)       %panju==6fang cha xin xi ti qu
   [vectora]=eig(sw);
   leicov=zeros(feanumsfeanums);
   leitezhi=zeros(classnumsfeanums);
   for nums=1:classnums
      for geshu=(nums-1)*numsofone+1:nums*numsofone
          leicov=leicov+(data(geshu:)-classmean(nums:))‘*(data(geshu:)-classmean(nums:));
      end
      leicov=leicov/numsofone;   
      c=vector‘*leicov*vector;
      for feas=1:feanums
         leitezhi(numsfeas)=plei*c(feasfeas)/a(feasfeas);
      end
   end   
   leitezhi;   
   for feas=1:feanums
      J(feas)=0;
      for nums=1:classnums
         J(feas)=J(feas)-leitezhi(numsfeas)*log(leitezhi(numsfeas));
      end
   end      
   %J=prod(leitezhi); 
elseif(panju==7)
   [vectora]=eig(sb);
end
tezhi=zeros(1feanums);
for feas=1:feanums
   tezhi(1feas)=a(feasfeas);
end
if(panju<=4|panju==7)
   sumtezhi=sum(tezhi);
   J=tezhi/sumtezhi;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         707  2002-05-02 08:43  特征选择与提取zch\NEAREST.M
     文件         788  2002-05-02 18:29  特征选择与提取zch\TONGJI.M
     文件         345  2002-04-21 22:02  特征选择与提取zch\XUANLIE.M
     文件        4031  2002-05-02 18:28  特征选择与提取zch\kltransform.m
     文件       25321  2002-04-23 08:49  特征选择与提取zch\tezhengtiqu.m
     文件         248  2002-04-21 21:47  特征选择与提取zch\writetofile.m
     文件         190  2002-04-21 22:34  特征选择与提取zch\writexinxi.m
     目录           0  2017-05-13 15:49  特征选择与提取zch\

评论

共有 条评论