此算法对象是白血病基因数据,采用巴氏距离的算法进行运算,原理是根据信噪比的算法代码修改,应该是矩阵运算时出错,但是不清楚如何进行修改,请指教。
clear all;
clc;
K=xlsread('baixuebing.xlsx');
[i,j] = size(K);
y=zeros(1,4);%分为四个区间;
p1=zeros(47,j-1);
p2=zeros(25,j-1);
st1=zeros(47,j-1);
st2=zeros(25,j-1);
a1=0;
a2=0;
a3=0;
a4=0;
%----正类
p1=K(1:47,:);
st1=K(1:47,:);
P_1=mean(p1);
st_1=std(st1,0,1);
%f----负类
p2=K(48:72,:);
st2=K(48:72,:);
P_2=mean(p2);
st_2=std(st2,0,1);
%-----分子
fz=abs(P_1-P_2);
%-----分母
fm=st_1+st_2;
%----snr
snr=(1/4)*abs(((P_1-P_2)*(P_1-P_2)')/(st_1*st_1'+st_2*st_2'))+(1/2)*log((st_1*st_1'+st_2*st_2')/(2*st_1*st_2));
W=find(0.6
[t1,t2] = size(W);
new=K(:,W(1,:));%对应列序号的所有基因特征,组成新的特征基因矩阵new
for i=1:7129
if snr(i)<=0.2
a1=a1+1;
else if 0.2< snr(i)&&snr(i)<=0.4
a2=a2+1;
else if 0.4
a3=a3+1;
else if 0.6
a4=a4+1;
end
end
end
end
end
y=[a1,a2,a3,a4];
x=[0.2,0.4,0.6,0.8];
figure;
bar(snr);
%title('信噪比');
ylabel ('信噪比/db');
xlabel ('基因编号');
figure;
bar(x,y);
%title('区间分布');
ylabel ('基因个数');
xlabel ('信噪比/db');
%set(gca, 'Xticklabel', {'','(0,0.2]','','(0.2,0.4]','','(0.4,0.6]','','(0.6,0.8]'});
set(gca, 'Xticklabel', {'','','0.2','','0.4','','0.6','','0.8'});
11.jpg
(96.74 KB, 下载次数: 0)
2016-4-7 16:23 上传