Produce equality matrix based on elements in vector.
Mostrar comentarios más antiguos
Given two equally sized vectors A and B, is there any way to make a matrix C of 1's and zero's such that the kth row of C contains 1's wherever elements of B equal the kth element of A?
I can do it by looping through elements of A, but I want to know if there's a vectorised way of doing this to speed it up?
2 comentarios
Alexander Holmes
el 27 de Mzo. de 2020
Editada: Alexander Holmes
el 27 de Mzo. de 2020
Guillaume
el 27 de Mzo. de 2020
"I can just use repmat"
You don't need repmat. Implicit expansion will take care of repeating the elements for you and will be faster. See my answer.
Respuesta aceptada
Más respuestas (3)
Fangjun Jiang
el 27 de Mzo. de 2020
Like this?
A=randi(10,5,1);
B=randi(10,5,1);
k=3;
C=(B==A(k))
Bernd Wagner
el 27 de Mzo. de 2020
0 votos
Does the Logical opperator C= A==B not do that work?
It compares values in Vector A and responds a logical value 1 if the Value is also on the same line in B. Hence your C vector will be a vector of 0 and 1 with 1 if A==B.
1 comentario
Alexander Holmes
el 27 de Mzo. de 2020
darova
el 27 de Mzo. de 2020
Try bsxfun
% make all combinations using bsxfun
C = bsxfun(@minus,b(:),a(:)'); % b - rows, a - columns
[i,j] = find(~C); % find 'zero'
C1 = C*0;
C1(i,:) = 1; % make entire row '1' if any element a==b
Categorías
Más información sobre MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!