hello everyone , I have a matrix of probability: prb.mat and another matrix class.mat that contain the class for each probability like this :
prb =[0.0953 0.0116 0.0086 0.0067 0.0112 0.0092 0.0568 0.0639 0.959] class = [1 2 3 2 3 1 3 2 1]
I want to construct a matrix m using the binary order according to the class of probability like this :
class 3 class 2 class 1 order class position in m 0 0 0 ==> ensemble vide {} 1 0 0 1 ==> {class 1} 2 0 1 0 ==> {class 2} 3 0 1 1 ==> {class 1,class 2} 4 1 0 0 ==> {class 3} 5 1 0 1 ==> {class 1,class 3} 6 1 1 0 ==> {class 2,class 3} 7 1 1 1 ==> {class 1,class 2,,class 3} 8
the matrix m (size 2^n) is constructed for each row of each matrix prb.mat and class.mat as follows for the first line of prb and class :
prb = 0.0953 0.0116 0.0086 order = 1 2 3 n=3; m(1,2,3)=i.*prob(i);==> position in m=8 m(1,2)=i.*prob(i);===> position in m=4 m(1)=i.*prob(i); ===> position in m=2and the other values are 0. then the final matrix m for the fist line is m=[0 0,0953 0 0,0232 0 0 0 0,0258]
I doing this using this code :
prb =[0.0953 0.0116 0.0086 0.0067 0.0112 0.0092 0.0568 0.0639 0.959] class = [1 2 3 2 3 1 3 2 1] n=size(prb,1); for i=1 prob1=prb(i,:) indice=class(i,:) end %%%%%%%%%%%%construction m %%%%%%%%%%%%%%%%%
ind = 2^indice(1); %%ind: position du 1er élément
m=[]; for i=1:n-1 m(ind)= i.*prob1(i); ind=2^indice(i+1) ; end ind=2^(n); m(ind)=n*prob1(n);
now the problem is that this code works for the first line for prb and class matrix and does not work for the other lines. the problem exactly is that the values are not set in their good position in the matrix m. for example, this code gives a wrong result for the second line for i = 3
prob=[0.0568 0.0639 0.959] order=[ 3 2 1] m=[0 0 0 0,1278 0 0 0 2,8770]
but the good positions are m are:
m(3,2,1)= 3.*prob(i); position in m=8 m(3,2)= 2.* prob(i);position in m=7 m(3)= 1 .*prob(i); position in m=5 please help me to change this program to obtain each value in their good position in m following the binary order. I await suggestions and thank you in advance
Best Answer