%----4.19编 SFFS 特征选择 成功!
clear;
clc;
%--------特征导入 请自行修改
A=imread('lsy1.gif');
[M N]=size(A);
load coourfeature_0414_lsy1 %%%共生矩阵 96.14%
feature{1}=coourfeature(:,1);
feature{2}=coourfeature(:,2);
feature{3}=coourfeature(:,3);
load fuwavefeature_0413_lsy1 %%复小波 98.26%
for i=1:13
feature{3+i}=wavefeature(:,i);
end
load wavefeature_0413_feixia_lsy1%%%非下采样小波 97.58%
for i=1:7
feature{16+i}=wavefeature(:,i);
end
load wavefeature_0417_lsy1%%小波 97.65%
for i=1:7
feature{23+i}=wavefeature(:,i);
end
%%%%%%%----------归一化
[m n]=size(feature{1});
for j=1:30%一共30组特征 这里 请自行修改
mx=max(feature{j});
mi=min(feature{j});
mxx=(mx-mi);
mii=ones([m n])*mi;
feature{j}=(feature{j}-mii)./mxx;
end
%-------------------------特征选择开始啦!!
d=3;%d 是最终要得到的特征数
chosen=[];%%表示已选的特征
chosen=[chosen 1 ];
%--------------------------------------------------------------------------
%--先用sfs法选入3个,否则下面的运算容易陷入死循环
for j=1:3 %选4个特征
J=zeros([1 30]);
for i=2:30 %一共30组特征 这里 请自行修改
[mm nn]=size(chosen);
for p=1:nn
if i==chosen(p)
J(i)=0;
break;
else
J(i)=J(i)-sum(sum((feature{i}-feature{chosen(p)}).^2));
end
end
end
mi=min(J);
for i=1:30
if J(i)==0
J(i)=mi;
end
end
ma=max(J);
for i=1:30
if J(i)==ma
chosen=[chosen i];
break;
end
end
end
%------------------开始
while d<13
%-----------------------------1 选l个特征-------------------------------------
%一个特征一个特征的选入
J=zeros([1 30]);
for i=1:30
[mm nn]=size(chosen);
for p=1:nn
if i==chosen(p)
J(i)=0;
break;
else
J(i)=J(i)-sum(sum((feature{i}-feature{chosen(p)}).^2));
end
end
end
mi=min(J);
for i=1:30
if J(i)==0
J(i)=mi;
end
end
[ma1 we1]=max(J);
chosen=[chosen we1];
d=d+1;
%-----------------------------2 去掉r个特征-------------------------------------
[ch chnum]=size(chosen);
J=zeros([1 chnum]);ii=0;
for i=1:chnum % 去掉chosen中第i个的效果
[mm nn]=size(chosen);
for p=1:nn
for q=1:nn
if (chosen(q)~=chosen(i)) & (chosen(p)~=chosen(i))
J(i)=J(i)-sum(sum((feature{chosen(q)}-feature{chosen(p)}).^2));
end
end
end
end
% mi=min(J);
for cc=1:chnum
if J(cc)==0
J(cc)=mi;
end
end
[ma we]=max(J);
if ma>ma1
chosen(we)=[];
d=d-1;
end
end
[mm nn]=size(chosen);
tezh=[];
for i=1:nn
tezh=[tezh feature{chosen(i)}];
end
%%%%%%%%聚类
[IDC,U]=kmeans(tezh,2);
cc(IDC==1,1)=0;
cc(IDC==2,1)=0.75;
g=reshape(cc,M,N);
figure,imshow(g);
%%%%%%%%%%%%计算正确率
ju=ones(M)*0.75;
for i=1:M
for j=1:M/2
ju(i,j)=0;
end
end
ju2=g-ju;
prob=prod(size(find(ju2~=0)))/(m*n)
1-prob
信号特征提取程序(matlab实现)
3星 · 超过75%的资源 需积分: 42 89 浏览量
2015-08-24
00:17:49
上传
评论 22
收藏 5KB ZIP 举报
aigggggg
- 粉丝: 4
- 资源: 7
最新资源
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
- Unity画面共享Spout插件
- 基于C++用modbus实现的工业设备的数据采集程序,支持Tcp、串口
- 完结12章AI Agent智能应用从0到1定制开发
- 15白落梅:你是锦瑟我为流年:三毛的万水千山-3491776.mobi
- Federated Learning-Aided Prognostics in the Shipping 4.0: Princi
- OFDM 的鲁棒频率和定时同步文献部分阅读笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页