matlab - suptitle - encontrar filas coincidentes en la matriz
suptitle matlab (4)
Manera más fácil con repmat
:
a = [1 2 3; 4 5 6; 7 8 9];
t = [4 5 6];
[x,y] = size(a);
r = all(a==repmat(t,y,1), 2)''
Supongamos que tengo una matriz (mxn) Q y un vector de fila r, por ejemplo
Q = [ 1 2 3 ; 4 2 3 ; 5 6 7 ; 1 2 3 ; 1 2 3 ; 1 2 5 ];
r = [ 1 2 3 ];
¿Cuál es la forma más fácil de obtener un vector lógico (de longitud m) que indica cuáles de las filas en Q son idénticas (para todos los elementos) a la fila especificada r?
En el caso de muestra anterior, eso debería ser
[ 1 0 0 1 1 0 ];
Puede usar ismember
y hacerlo en una sola línea:
>> ismember(Q,r,''rows'')''
ans =
1 0 0 1 1 0
a = [1 1 1; 2 2 2; 3 3 3];
b = a(1:2,;);
[temp locb] = ismember(a,b,''rows'');
b(locb(locb~=0),:)
ans =
1 1 1
2 2 2
all(bsxfun(@eq, r, Q),2)''
bsxfun(@eq, r, Q)
compara cada fila y devuelve una matriz del mismo tamaño que Q:
>> bsxfun(@eq, r, Q)
ans =
1 1 1
0 1 1
0 0 0
1 1 1
1 1 1
1 1 0
la función all
calcula si el resultado de bsxfun es verdadero a lo largo de cada fila por separado. Por lo tanto, regresa:
>> all(ans,2)''
ans =
1 0 0 1 1 0
y sí, también hay un operador de transposición ''
para que coincida con la salida de fila deseada