📄 caculatei.m
字号:
function[h,num_t,num_f]=caculatei(trt,trf,train_t,train_f,l,i,j)
%train_t为正例训练集
%train_f为反例训练集
%l为窗口长度
num_t=zeros(5,5); %num_t保存的是正例中i,j两个属性之间的转移关系
for m=1:trt
if train_t(m,i)=='A'&&train_t(m,j)=='A'
num_t(1,1)=num_t(1,1)+1;
elseif train_t(m,i)=='A'&&train_t(m,j)=='C'
num_t(1,2)=num_t(1,2)+1;
elseif train_t(m,i)=='A'&&train_t(m,j)=='G'
num_t(1,3)=num_t(1,3)+1;
elseif train_t(m,i)=='A'&&train_t(m,j)=='T'
num_t(1,4)=num_t(1,4)+1;
elseif train_t(m,i)=='C'&&train_t(m,j)=='A'
num_t(2,1)=num_t(2,1)+1;
elseif train_t(m,i)=='C'&&train_t(m,j)=='C'
num_t(2,2)=num_t(2,2)+1;
elseif train_t(m,i)=='C'&&train_t(m,j)=='G'
num_t(2,3)=num_t(2,3)+1;
elseif train_t(m,i)=='C'&&train_t(m,j)=='T'
num_t(2,4)=num_t(2,4)+1;
elseif train_t(m,i)=='G'&&train_t(m,j)=='A'
num_t(3,1)=num_t(3,1)+1;
elseif train_t(m,i)=='G'&&train_t(m,j)=='C'
num_t(3,2)=num_t(3,2)+1;
elseif train_t(m,i)=='G'&&train_t(m,j)=='G'
num_t(3,3)=num_t(3,3)+1;
elseif train_t(m,i)=='G'&&train_t(m,j)=='T'
num_t(3,4)=num_t(3,4)+1;
elseif train_t(m,i)=='T'&&train_t(m,j)=='A'
num_t(4,1)=num_t(4,1)+1;
elseif train_t(m,i)=='T'&&train_t(m,j)=='C'
num_t(4,2)=num_t(4,2)+1;
elseif train_t(m,i)=='T'&&train_t(m,j)=='G'
num_t(4,3)=num_t(4,3)+1;
elseif train_t(m,i)=='T'&&train_t(m,j)=='T'
num_t(4,4)=num_t(4,4)+1;
end
end
for n=1:4
for m=1:4
num_t(n,5)=num_t(n,5)+num_t(n,m);
num_t(5,n)=num_t(5,n)+num_t(m,n);
end
end
num_f=zeros(5,5); %num_f保存的是反例中i,j两个属性之间的转移关系
for m=1:trt
if train_f(m,i)=='A'&&train_f(m,j)=='A'
num_f(1,1)=num_f(1,1)+1;
elseif train_f(m,i)=='A'&&train_f(m,j)=='C'
num_f(1,2)=num_f(1,2)+1;
elseif train_f(m,i)=='A'&&train_f(m,j)=='G'
num_f(1,3)=num_f(1,3)+1;
elseif train_f(m,i)=='A'&&train_f(m,j)=='T'
num_f(1,4)=num_f(1,4)+1;
elseif train_f(m,i)=='C'&&train_f(m,j)=='A'
num_f(2,1)=num_f(2,1)+1;
elseif train_f(m,i)=='C'&&train_f(m,j)=='C'
num_f(2,2)=num_f(2,2)+1;
elseif train_f(m,i)=='C'&&train_f(m,j)=='G'
num_f(2,3)=num_f(2,3)+1;
elseif train_f(m,i)=='C'&&train_f(m,j)=='T'
num_f(2,4)=num_f(2,4)+1;
elseif train_f(m,i)=='G'&&train_f(m,j)=='A'
num_f(3,1)=num_f(3,1)+1;
elseif train_f(m,i)=='G'&&train_f(m,j)=='C'
num_f(3,2)=num_f(3,2)+1;
elseif train_f(m,i)=='G'&&train_f(m,j)=='G'
num_f(3,3)=num_f(3,3)+1;
elseif train_f(m,i)=='G'&&train_f(m,j)=='T'
num_f(3,4)=num_f(3,4)+1;
elseif train_f(m,i)=='T'&&train_f(m,j)=='A'
num_f(4,1)=num_f(4,1)+1;
elseif train_f(m,i)=='T'&&train_f(m,j)=='C'
num_f(4,2)=num_f(4,2)+1;
elseif train_f(m,i)=='T'&&train_f(m,j)=='G'
num_f(4,3)=num_f(4,3)+1;
elseif train_f(m,i)=='T'&&train_f(m,j)=='T'
num_f(4,4)=num_f(4,4)+1;
end
end
for n=1:4
for m=1:4
num_f(n,5)=num_f(n,5)+num_f(n,m);
num_f(5,n)=num_f(5,n)+num_f(m,n);
end
end
for n=1:4
for m=1:4
a=num_t(n,m)/trt+trf;
b=num_t(n,m)/trt;
c=num_t(n,5)/trt;
d=num_t(5,m)/trt;
if(a*b*c*d)==0
i_t_ij(n,m)=0;
else
i_t_ij(n,m)=a*log(b/(c*d));
end
a=num_f(n,m)/trt+trf;
b=num_f(n,m)/trf;
c=num_f(n,5)/trf;
d=num_f(5,m)/trf;
if(a*b*c*d)==0
i_f_ij(n,m)=0;
else
i_f_ij(n,m)=a*log(b/(c*d));
end
end
end
h=0;
for n=1:4
for m=1:4
h=h+i_t_ij(n,m)+i_f_ij(n,m);
end
end
h=0-h;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -