matlab代码巴氏距离,matlab 矩阵运算问题,算法是巴氏距离。求大师解答。

此算法对象是白血病基因数据,采用巴氏距离的算法进行运算,原理是根据信噪比的算法代码修改,应该是矩阵运算时出错,但是不清楚如何进行修改,请指教。

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 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

56a4d2b10314e14f33384022f4ade5ea.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值