function ratiov=obj2level(Design,r, kC,kn) p=kC+kn; N=2^p; n=size(Design,1); U=[1,-1;1,1]; R=diag([1,r]); points=[-1,1]'; order=[0,1]; for i=2:p U=[U,-U;U,U]; points=[kron([1,1]',points),kron([-1,1]',ones(size(points,1),1))]; order=[order,order+1]; temp=diag(R).'; R=diag([temp,r*temp]); end %flag is used to indicate how many noise factors in the term wt=zeros(1,N); flag=1; for i=1:kC flag=kron([1,1],flag); end for i=1:kn flag=kron([1,2],flag); end % wt is the diagonal matrix A, wt is user specified wt(flag==2)=1; for l=1:n for i=1:N if sum(Design(l,:)==U(i,order==1))==p D(l)=i; end end end U=U(D,:); %fai=U*R*U'+rate*eye(n); fai=U*R*U'; V=R*U'*inv(fai)*U*R; ratiov=wt*diag(V)/(wt*diag(R));