0

I have 2 sequences in a cell-array :

 Input_cell= {'ABC','ACB'}
 S1= 'ABC' % which means A<B<C
 S2= 'ACB' % which means A<C<B

I want to convert each of the strings in the Input_cell into a matrix M[i,j] which has to satisfy those conditions :

       M[i,j] , M[j,i] are random
       M[i,i] =0.5
       M[i,j] + M[j,i] = 1
       M[i,j] < M[j,i] % For example: if A<B then M[A,B] < M[B,A]


%// For example: if we have S1 = 'ABC'  (which means `A<B<C`), the M1 matrix will  be expected as follows:

     A      B    C    
  A  0.5    0    0   
  B  1     0.5   0  
  C  1      1   0.5   


%// If we have S2 = 'ACB' (which means `A<C<B`), the M2 matrix will be expected as follows:
     A      B    C    
  A  0.5    0    0   
  B  1     0.5   1  
  C  1      0   0.5   

How to create that kind of above matrices from a given cell-array of sequences?

1
  • do you have a naive attempt to show over there ? Commented Oct 1, 2015 at 8:23

1 Answer 1

1
%get the ordering, where '312' would mean that A is largest, then C, then B
[~,k]=sort(S2);
%compare each pair
bsxfun(@(a,b)(a<b)+0.5*(a==b),k,k')
Sign up to request clarification or add additional context in comments.

2 Comments

how to generate the 2 matrices at a time from the given cell-array Input-cell = { 'ABC', 'ACB'} ?
Use a loop and iterate through.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.