有如下代码:
function [G,Gval,t]=edgereduce(G,Gval,order,data,t,lamda)
if order==0 %计算0阶互信息
for i=1:size(G,1)-1
for j=i+1:size(G,1)
if G(i,j)~=0 %如果i,j两点间存在连接
cmiv=cmi(data(i,:),data(j,:)); %计算出i,j的条件互信息
Gval(i,j)=cmiv; Gval(j,i)=cmiv; %将条件互信息的值存入Gval中
if cmiv
end
end
end
end
t=t+1;
else %计算高阶互信息
for i=1:size(G,1)-1
for j=i+1:size(G,1)
if G(i,j)~=0
adj=[] ;
for k=1:size(G,1) %size(G,1)表示基因的个数
if G(i,k)~=0 && G(j,k)~=0
adj=[adj,k] ;
end
end %如果基因k与基因i,j均相邻,则将其放入数组adj中,adj表示邻居节点个数
if size(adj,2)>=order %判断邻居数是否大于阶数
combntnslist=combntns(adj,order); %找出邻居节点的order阶互信息的所有可能组合形式
combntnsrow=size(combntnslist,1); %总的组合个数
cmiv=0;
v1=data(i,:);
v2=data(j,:); %v1是节点i的信息,v2是节点j的信息
for k=1:combntnsrow
vcs=data(combntnslist(k,:),:); %第k种可能组合方式的信息数
a=cmi(v1,v2,vcs) ; %计算出所有的order阶互信息
cmiv=max(cmiv,a); %找出最大的order阶互信息值
end
Gval(i,j)=cmiv; Gval(j,i)=cmiv;
if cmiv
end
t=t+1;
end
end
end
end
end
end
我定义个上述的函数,然后在另一个文件中调用这个函数,但是我也想知道这个函数中的v1,v2,vcs的值,请问怎么求解,谢谢!
可以在之后添加一个输出函数,例如在C语言中就可以加,printf(“d%d%d%”,v1,v2,vcs);
当然各个程序差不多,您可以采取类似的方式。
% 1 将函数内的变量增加为输出变量;
% 2 将函数内的变量设为全局变量;
% 总之一句话,必须编辑函数代码。