2015-10-01 2 views
0

у меня есть 2 последовательностей в клетке массива:Создание матриц отношения из данной ячейки массива строк (Matlab)

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

Я хочу, чтобы преобразовать каждую из строк в Input_cell в матрицу M[i,j], которая должен удовлетворять этим условиям:

 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 

Как создать такой тип вышеуказанных матриц из заданного массива последовательностей?

+0

У вас есть наивная попытка показать там? – Abra001

ответ

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') 
+0

Как сгенерировать 2 матрицы за один раз из заданного массива ячеек Входная ячейка = {'ABC', 'ACB'}? – kgk

+1

Используйте петлю и пройдите. – Daniel

Смежные вопросы