从给定的字符串元胞数组创建关系矩阵 (Matlab)
Create relation matrices from a given cell-array of strings (Matlab)
我在一个元胞数组中有 2 个序列:
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
如何从给定的序列元胞数组创建上述那种矩阵?
%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')
我在一个元胞数组中有 2 个序列:
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
如何从给定的序列元胞数组创建上述那种矩阵?
%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')