How to determine a matrix presenting the number of times that element j appears at position i, and the number of times that element j appears immediately after k?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Md. Asadujjaman
el 20 de Feb. de 2022
Respondida: Simon Chan
el 20 de Feb. de 2022
Suppose, j=6 elements = 11, 12, 13, 21, 22, 23
X, Y, Z are three arrays containing the permutation of j elements.
X = [11 22 21 13 12 23]
Y = [11 13 21 23 22 12]
Z = [21 12 11 13 23 22]
How can I determine a matrix (A) from X, Y, Z representing the number of times that element j appears at position i (=1,2,3,4,5,6)?
A would be j*i matrix. The answer would be:
A = [A11 A12 A13 A14 A15 A16
A21 A22 A23 A24 A25 A26
A31 A32 A33 A34 A35 A36
A41 A42 A43 A44 A45 A46
A51 A52 A53 A54 A55 A56
A61 A62 A63 A64 A65 A66]
= [2 0 1 0 0 0
0 1 0 0 1 1
0 1 0 2 0 0
1 0 2 0 0 0
0 1 0 0 1 1
0 0 0 1 1 1]
Let j=k.
How can I determine a matrix (B) from X, Y, Z representing the number of times that element j appears immediately after k (where j ~= k)?
B = [- 1 0 1 0 0
2 - 2 3 2 1
3 1 - 2 1 0
2 0 1 - 1 0
3 1 2 2 - 2
3 2 3 3 1 -]
0 comentarios
Respuesta aceptada
Simon Chan
el 20 de Feb. de 2022
Use function ismember and create a counter to accumulate the number of occurance
S = [11, 12, 13, 21, 22, 23];
X = [11 22 21 13 12 23];
Y = [11 13 21 23 22 12];
Z = [21 12 11 13 23 22];
K = [X;Y;Z];
index = arrayfun(@(t) ismember(K,t),S,'uni',0); % Find the position index
A = cell2mat(cellfun(@sum,index,'uni',0)')
%
B = zeros(numel(S),numel(S)); % Initialize counter B
for n = 1:numel(S)
[row,col] = find(index{n}); % Find the row and column number of the specific number
for k = 1:size(K,1)
data = K(row(k),1:col(k)); % Extract the numbers in front of the specific number
B(n,:) = B(n,:) + ismember(S,data); % Add the number in the counter
end
B(n,n)=NaN; % Set own counts to NaN
end
B
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!