Matlab 排列组合代码

COMBNTNS  All possible combinations of a set of values
   c = COMBNTNS(choicevec,choose) returns all combinations of the values of the input choice vector.
 
PERMS  All possible permutations. 
   PERMS(1:N), or PERMS(V) where V is a vector of length N, creates a  matrix with N! rows and N columns containing all possible  permutations of the N elements. 
 
%=================================   
% Author:
%             
% Date: 2011/6/28    
% Function: 置换检验, matlab codes for permutation tests    
%=================================    
%    
%                Control           Drug    
% Expression     9 12 14 17        18 21 23 26    
% Average        13                22    
%    
% The difference in averages is 22-13=9.    
%================================= a=[9  12  14  17   18  21  23  26]   
Mcontrol = mean(a(1:4));     
Mdrug = mean(a(5:8));     
SumA = sum(a);     
TS = Mdrug-Mcontrol;   %计算检验统计量    
Rearranges = combntns(a,4);   %组合,重排,本例有70行    
MeanControls = sum(Rearranges,2)/4;   %重排后Control组的样本均值,本例有70行    
MeanDrugs = (SumA-sum(Rearranges,2))/4;   %重排后Drug组的样本均值,本例有70行    
PermutationValues = MeanDrugs - MeanControls;   %置换值,本例有70行    
[m,n]=size(PermutationValues);     
hist(PermutationValues )    % 产生直方图 GreaterNumbers=0;    %计算超过检验统计量的置换值的个数   
for i=1:m     
    if PermutationValues(i,1)>=TS     
        GreaterNumbers=GreaterNumbers+1;     
    end     
end; PValue=GreaterNumbers/m; %计算P值
%=================================

置换检验代码, matlab codes for permutation tests_Express

 

置换检验代码, matlab codes for permutation tests_直方图_02

 

 

置换检验代码, matlab codes for permutation tests_直方图_03

 

 

置换检验代码, matlab codes for permutation tests_直方图_04

 

 

置换检验代码, matlab codes for permutation tests_样本均值_05

 

 

置换检验代码, matlab codes for permutation tests_Express_06

 

 

 

%=================================

 

%=================================